// methods
        public ICluster BuildCluster()
        {
            IStreamFactory streamFactory = new TcpStreamFactory(_tcpStreamSettings);

            if (_sslStreamSettings != null)
            {
                streamFactory = new SslStreamFactory(_sslStreamSettings, streamFactory);
            }

            streamFactory = _streamFactoryWrapper(streamFactory);

            var connectionFactory = new BinaryConnectionFactory(
                _connectionSettings,
                streamFactory,
                _connectionListener);

            var connectionPoolFactory = new ExclusiveConnectionPoolFactory(
                _connectionPoolSettings,
                connectionFactory,
                _connectionPoolListener);

            var serverFactory = new ServerFactory(
                _serverSettings,
                connectionPoolFactory,
                connectionFactory,
                _serverListener);

            var clusterFactory = new ClusterFactory(
                _clusterSettings,
                serverFactory,
                _clusterListener);

            return(clusterFactory.CreateCluster());
        }
        // methods
        public ICluster BuildCluster()
        {
            IStreamFactory streamFactory = new TcpStreamFactory(_tcpStreamSettings);

            // TODO: SSL gets handled here specifically...

            streamFactory = _streamFactoryWrapper(streamFactory);

            var connectionFactory = new BinaryConnectionFactory(
                _connectionSettings,
                streamFactory,
                _connectionListener);

            var connectionPoolFactory = new ExclusiveConnectionPoolFactory(
                _connectionPoolSettings,
                connectionFactory,
                _connectionPoolListener);

            var serverFactory = new ServerFactory(
                _serverSettings,
                connectionPoolFactory,
                connectionFactory,
                _serverListener);

            var clusterFactory = new ClusterFactory(
                _clusterSettings,
                serverFactory,
                _clusterListener);

            return(clusterFactory.CreateCluster());
        }
        public ServerInst(IPAddress ipAddress, int port)
        {
            if (ipAddress == null)
            {
                throw new ArgumentNullException(nameof(ipAddress));
            }

            listener          = new TcpListener(ipAddress, port);
            ConnectionFactory = new BinaryConnectionFactory();
        }
        public ServerInst(IPEndPoint endPoint)
        {
            if (endPoint == null)
            {
                throw new ArgumentNullException(nameof(endPoint));
            }

            listener          = new TcpListener(endPoint);
            ConnectionFactory = new BinaryConnectionFactory();
        }
Example #5
0
        private IConnectionPoolFactory CreateConnectionPoolFactory()
        {
            var streamFactory = CreateTcpStreamFactory(_tcpStreamSettings);

            var connectionFactory = new BinaryConnectionFactory(
                _connectionSettings,
                streamFactory,
                _eventAggregator);

            return(new ExclusiveConnectionPoolFactory(
                       _connectionPoolSettings,
                       connectionFactory,
                       _eventAggregator));
        }
        private IConnectionPoolFactory CreateConnectionPoolFactory()
        {
            var streamFactory = CreateTcpStreamFactory(_tcpStreamSettings);

            var connectionFactory = new BinaryConnectionFactory(
                _connectionSettings,
                streamFactory,
                _eventAggregator,
                _clusterSettings.ServerApi);

            var connectionPoolSettings = _connectionPoolSettings.WithInternal(isPausable: !_connectionSettings.LoadBalanced);

            return(new ExclusiveConnectionPoolFactory(
                       connectionPoolSettings,
                       connectionFactory,
                       _eventAggregator));
        }
        // methods
        /// <summary>
        /// Builds the cluster.
        /// </summary>
        /// <returns>A cluster.</returns>
        public ICluster BuildCluster()
        {
            IStreamFactory streamFactory = new TcpStreamFactory(_tcpStreamSettings);

            if (_sslStreamSettings != null)
            {
                streamFactory = new SslStreamFactory(_sslStreamSettings, streamFactory);
            }

            streamFactory = _streamFactoryWrapper(streamFactory);

            var connectionFactory = new BinaryConnectionFactory(
                _connectionSettings,
                streamFactory,
                _eventAggregator);

            var connectionPoolFactory = new ExclusiveConnectionPoolFactory(
                _connectionPoolSettings,
                connectionFactory,
                _eventAggregator);

            var serverMonitorConnectionSettings = _connectionSettings.With(authenticators: new IAuthenticator[] { });
            var serverMonitorConnectionFactory  = new BinaryConnectionFactory(
                serverMonitorConnectionSettings,
                streamFactory,
                new EventAggregator());
            var serverMonitorFactory = new ServerMonitorFactory(
                _serverSettings,
                serverMonitorConnectionFactory,
                _eventAggregator);

            var serverFactory = new ServerFactory(
                _clusterSettings.ConnectionMode,
                _serverSettings,
                connectionPoolFactory,
                serverMonitorFactory,
                _eventAggregator);

            var clusterFactory = new ClusterFactory(
                _clusterSettings,
                serverFactory,
                _eventAggregator);

            return(clusterFactory.CreateCluster());
        }
        // methods
        private ICluster CreateCluster(ClusterKey clusterKey)
        {
            var clusterSettings        = CreateClusterSettings(clusterKey);
            var serverSettings         = CreateServerSettings(clusterKey);
            var connectionSettings     = CreateConnectionSettings(clusterKey);
            var connectionPoolSettings = CreateConnectionPoolSettings(clusterKey);

            var listener              = EmptyListener.Instance;
            var streamFactory         = CreateStreamFactory(clusterKey);
            var connectionFactory     = new BinaryConnectionFactory(connectionSettings, streamFactory, listener);
            var connectionPoolFactory = new ExclusiveConnectionPoolFactory(connectionPoolSettings, connectionFactory, listener);
            var serverFactory         = new ServerFactory(serverSettings, connectionPoolFactory, connectionFactory, listener);
            var clusterFactory        = new ClusterFactory(clusterSettings, serverFactory, listener);

            var cluster = clusterFactory.CreateCluster();

            cluster.Initialize();

            return(cluster);
        }
        private IServerMonitorFactory CreateServerMonitorFactory()
        {
            var serverMonitorConnectionSettings = _connectionSettings
                                                  .With(authenticatorFactories: new IAuthenticatorFactory[] { });

            var heartbeatConnectTimeout = _tcpStreamSettings.ConnectTimeout;

            if (heartbeatConnectTimeout == TimeSpan.Zero || heartbeatConnectTimeout == Timeout.InfiniteTimeSpan)
            {
                heartbeatConnectTimeout = TimeSpan.FromSeconds(30);
            }
            var heartbeatSocketTimeout = _serverSettings.HeartbeatTimeout;

            if (heartbeatSocketTimeout == TimeSpan.Zero || heartbeatSocketTimeout == Timeout.InfiniteTimeSpan)
            {
                heartbeatSocketTimeout = heartbeatConnectTimeout;
            }
            var serverMonitorTcpStreamSettings = new TcpStreamSettings(_tcpStreamSettings)
                                                 .With(
                connectTimeout: heartbeatConnectTimeout,
                readTimeout: heartbeatSocketTimeout,
                writeTimeout: heartbeatSocketTimeout
                );

            var serverMonitorStreamFactory = CreateTcpStreamFactory(serverMonitorTcpStreamSettings);
            var serverMonitorSettings      = new ServerMonitorSettings(
                connectTimeout: serverMonitorTcpStreamSettings.ConnectTimeout,
                heartbeatInterval: _serverSettings.HeartbeatInterval);

            var serverMonitorConnectionFactory = new BinaryConnectionFactory(
                serverMonitorConnectionSettings,
                serverMonitorStreamFactory,
                new EventAggregator(),
                _clusterSettings.ServerApi);

            return(new ServerMonitorFactory(
                       serverMonitorSettings,
                       serverMonitorConnectionFactory,
                       _eventAggregator,
                       _clusterSettings.ServerApi));
        }
 public ClientInst()
 {
     ConnectionFactory = new BinaryConnectionFactory();
 }