19: Implement cluster discovery using dns. Adding missing file.
This commit is contained in:
		@@ -59,21 +59,42 @@ function createFromStringEndpoint(settings, endPoint, connectionName) {
 | 
				
			|||||||
  var m = endPoint.match(/^(tcp|discover):\/\/([^:]+):?(\d+)?$/);
 | 
					  var m = endPoint.match(/^(tcp|discover):\/\/([^:]+):?(\d+)?$/);
 | 
				
			||||||
  if (!m) throw new Error('endPoint string must be tcp://hostname[:port] or discover://dns[:port]');
 | 
					  if (!m) throw new Error('endPoint string must be tcp://hostname[:port] or discover://dns[:port]');
 | 
				
			||||||
  var scheme = m[1];
 | 
					  var scheme = m[1];
 | 
				
			||||||
  var host = m[2];
 | 
					  var host = m[2] || null;
 | 
				
			||||||
  var port = m[3] ? parseInt(m[3]) : 1113;
 | 
					  var port = m[3] ? parseInt(m[3]) : null;
 | 
				
			||||||
  if (scheme === 'tcp') {
 | 
					  if (scheme === 'tcp') {
 | 
				
			||||||
    var tcpEndpoint = {
 | 
					    var tcpEndpoint = {
 | 
				
			||||||
      host: host,
 | 
					      host: host,
 | 
				
			||||||
      port: port
 | 
					      port: port || 1113
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    return createFromTcpEndpoint(settings, tcpEndpoint, connectionName);
 | 
					    return createFromTcpEndpoint(settings, tcpEndpoint, connectionName);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (scheme === 'discover') {
 | 
					  if (scheme === 'discover') {
 | 
				
			||||||
    throw new Error('Not implemented.');
 | 
					    return createFromClusterDns(settings, host, port || 2113, connectionName);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  throw new Error('Invalid scheme for endPoint: ' + scheme);
 | 
					  throw new Error('Invalid scheme for endPoint: ' + scheme);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function createFromClusterDns(connectionSettings, clusterDns, externalGossipPort, connectionName) {
 | 
				
			||||||
 | 
					  ensure.notNull(connectionSettings, "connectionSettings");
 | 
				
			||||||
 | 
					  ensure.notNull(clusterDns, "clusterDns");
 | 
				
			||||||
 | 
					  var mergedSettings = merge(defaultConnectionSettings, connectionSettings || {});
 | 
				
			||||||
 | 
					  var clusterSettings = {
 | 
				
			||||||
 | 
					    clusterDns: clusterDns,
 | 
				
			||||||
 | 
					    gossipSeeds: null,
 | 
				
			||||||
 | 
					    externalGossipPort: externalGossipPort,
 | 
				
			||||||
 | 
					    maxDiscoverAttempts: mergedSettings.maxDiscoverAttempts,
 | 
				
			||||||
 | 
					    gossipTimeout: mergedSettings.gossipTimeout
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  var endPointDiscoverer = new ClusterDnsEndPointDiscoverer(mergedSettings.log,
 | 
				
			||||||
 | 
					    clusterSettings.clusterDns,
 | 
				
			||||||
 | 
					    clusterSettings.maxDiscoverAttempts,
 | 
				
			||||||
 | 
					    clusterSettings.externalGossipPort,
 | 
				
			||||||
 | 
					    clusterSettings.gossipSeeds,
 | 
				
			||||||
 | 
					    clusterSettings.gossipTimeout
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					  return new EventStoreNodeConnection(mergedSettings, clusterSettings, endPointDiscoverer, connectionName);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function createFromGossipSeeds(connectionSettings, gossipSeeds, connectionName) {
 | 
					function createFromGossipSeeds(connectionSettings, gossipSeeds, connectionName) {
 | 
				
			||||||
  ensure.notNull(connectionSettings, "connectionSettings");
 | 
					  ensure.notNull(connectionSettings, "connectionSettings");
 | 
				
			||||||
  ensure.notNull(gossipSeeds, "gossipSeeds");
 | 
					  ensure.notNull(gossipSeeds, "gossipSeeds");
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user