Пример #1
0
        private Cluster(IEnumerable <object> contactPoints, Configuration configuration, IClusterLifecycleManager lifecycleManager)
        {
            Configuration = configuration;
            _metadata     = new Metadata(configuration);
            TaskHelper.WaitToComplete(AddHosts(contactPoints));
            var protocolVersion = _maxProtocolVersion;

            if (Configuration.ProtocolOptions.MaxProtocolVersionValue != null &&
                Configuration.ProtocolOptions.MaxProtocolVersionValue.Value.IsSupported())
            {
                protocolVersion = Configuration.ProtocolOptions.MaxProtocolVersionValue.Value;
            }

            _protocolEventDebouncer = new ProtocolEventDebouncer(
                configuration.TimerFactory,
                TimeSpan.FromMilliseconds(configuration.MetadataSyncOptions.RefreshSchemaDelayIncrement),
                TimeSpan.FromMilliseconds(configuration.MetadataSyncOptions.MaxTotalRefreshSchemaDelay));
            _controlConnection          = configuration.ControlConnectionFactory.Create(_protocolEventDebouncer, protocolVersion, Configuration, _metadata);
            _metadata.ControlConnection = _controlConnection;
            _serializer       = _controlConnection.Serializer;
            _sessionFactory   = configuration.SessionFactoryBuilder.BuildWithCluster(this);
            _lifecycleManager = lifecycleManager ?? new ClusterLifecycleManager(this);
        }
Пример #2
0
        internal static Cluster BuildFrom(IInitializer initializer, IReadOnlyList <string> hostNames, Configuration config, IClusterLifecycleManager manager)
        {
            hostNames = hostNames ?? new string[0];
            if (initializer.ContactPoints.Count == 0 && hostNames.Count == 0)
            {
                throw new ArgumentException("Cannot build a cluster without contact points");
            }

            return(new Cluster(
                       initializer.ContactPoints.Cast <object>().Concat(hostNames),
                       config ?? initializer.GetConfiguration(),
                       manager));
        }
Пример #3
0
 public Cluster Create(IInitializer initializer, IReadOnlyList <string> hostnames, Configuration config, IClusterLifecycleManager lifecycleManager)
 {
     return(Cluster.BuildFrom(initializer, hostnames, config, lifecycleManager));
 }