コード例 #1
0
        internal Connection(TcpClient client, ProtocolConfiguration configuration,
                            IInternalServiceManager <IConnection> services = null, ISslStreamFactory sslFactory = null,
                            IConnectionData data = null, List <InternalPayloadDispatchHandler> dispatcher       = null) : this(
                configuration.PayloadEncoder.Clone(), configuration.PayloadDecoder.Clone())
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            if (client == null || !client.Connected)
            {
                throw new ArgumentException(nameof(client));
            }

            Client = client;

            SslMode = configuration.SslMode;
            CustomOutcomingMessageQueue = configuration.CustomOutcomingMessageQueue;
            CustomIncomingMessageQueue  = configuration.CustomIncomingMessageQueue;
            _services       = services; // ?? BasicServiceManager<IConnection>.Empty;
            _sslFactory     = sslFactory;
            Data            = data;
            DispatchPayload = dispatcher ?? new List <InternalPayloadDispatchHandler>(0);
            _readAsync      = configuration.ReadAsync;
        }
コード例 #2
0
        public TcpServer(IPEndPoint endpoint, IConnectionBuilder connectionBuilder,
                         IInternalServiceManager <IServer> services = null)
        {
            Connections       = new ConcurrentDictionary <long, IConnection>();
            Endpoint          = endpoint;
            ConnectionBuilder = connectionBuilder.UseDispatcher(Con_DispatchPayload);

            _timer          = new Timer(Timer_Tick, null, 0, System.Threading.Timeout.Infinite);
            _services       = services ?? ServicesManager <IServer> .Empty;
            DispatchPayload = new List <Connection.InternalPayloadDispatchHandler>(0);
        }