コード例 #1
0
        protected ConnectionListener(
            Uri addressUri,
            AmqpSettings amqpSettings,
            AmqpConnectionSettings connectionSettings)
        {
            amqpSettings.ValidateListenerSettings();
            this.listenAddress = addressUri;
            this.amqpSettings = amqpSettings;
            this.connectionSettings = connectionSettings;
            this.onAcceptTransport = this.OnAcceptTransport;

            TcpTransportSettings tcpSettings = new TcpTransportSettings();
            tcpSettings.SetEndPoint(addressUri.Host, addressUri.Port, true);
            TransportListener tpListener = null;
            if (addressUri.Scheme.Equals(AmqpConstants.SchemeAmqps, StringComparison.OrdinalIgnoreCase))
            {
                TlsTransportProvider tlsProvider = this.amqpSettings.GetTransportProvider<TlsTransportProvider>();
                if (tlsProvider == null)
                {
                    throw Fx.Exception.ArgumentNull("TlsSecurityProvider");
                }

                Fx.Assert(tlsProvider.Settings.Certificate != null, "Must have a valid certificate.");
                TlsTransportSettings tlsSettings = new TlsTransportSettings(tcpSettings, false);
                tlsSettings.Certificate = tlsProvider.Settings.Certificate;
                tpListener = tlsSettings.CreateListener();
            }
            else
            {
                tpListener = tcpSettings.CreateListener();
            }

            this.transportListener = new AmqpTransportListener(new TransportListener[] { tpListener }, this.amqpSettings);
            this.onConnectionOpenComplete = new AsyncCallback(this.OnConnectionOpenComplete);
        }
コード例 #2
0
ファイル: TcpTransport.cs プロジェクト: modulexcite/IL2JS
        public TcpTransport(Socket socket, TcpTransportSettings transportSettings) :
            base()
        {
            this.socket = socket;
            this.socket.SendBufferSize = transportSettings.TcpBufferSize;
            this.socket.ReceiveBufferSize = transportSettings.TcpBufferSize;

            this.sendEventArgs = new SocketAsyncEventArgs();
            this.sendEventArgs.Completed += new EventHandler<SocketAsyncEventArgs>(this.OnAsyncComplete);
            this.receiveEventArgs = new SocketAsyncEventArgs();
            this.receiveEventArgs.Completed += new EventHandler<SocketAsyncEventArgs>(this.OnAsyncComplete);
        }
コード例 #3
0
ファイル: TcpTransport.cs プロジェクト: tralivali1234/IL2JS
        public TcpTransport(Socket socket, TcpTransportSettings transportSettings) :
            base()
        {
            this.socket = socket;
            this.socket.SendBufferSize    = transportSettings.TcpBufferSize;
            this.socket.ReceiveBufferSize = transportSettings.TcpBufferSize;

            this.sendEventArgs               = new SocketAsyncEventArgs();
            this.sendEventArgs.Completed    += new EventHandler <SocketAsyncEventArgs>(this.OnAsyncComplete);
            this.receiveEventArgs            = new SocketAsyncEventArgs();
            this.receiveEventArgs.Completed += new EventHandler <SocketAsyncEventArgs>(this.OnAsyncComplete);
        }
コード例 #4
0
 public TcpTransport(Socket socket, TcpTransportSettings transportSettings) : base("tcp")
 {
     this.socket                   = socket;
     this.socket.NoDelay           = true;
     this.socket.SendBufferSize    = 0;
     this.socket.ReceiveBufferSize = 0;
     this.localEndPoint            = this.socket.LocalEndPoint;
     this.remoteEndPoint           = this.socket.RemoteEndPoint;
     this.sendEventArgs            = new TcpTransport.WriteAsyncEventArgs()
     {
         Transport = this
     };
     this.sendEventArgs.Completed    += TcpTransport.onWriteComplete;
     this.receiveEventArgs            = new TcpTransport.ReadAsyncEventArgs();
     this.receiveEventArgs.Completed += TcpTransport.onReadComplete;
     this.receiveEventArgs.Transport  = this;
 }
コード例 #5
0
ファイル: AmqpStream.cs プロジェクト: modulexcite/IL2JS
            protected OpenAsyncResult(AmqpStream parent, string address, bool listen, TimeSpan timeout, AsyncCallback callback, object state)
                : base(callback, state)
            {
                this.parent = parent;
                this.parent.isReceiver = listen;
                this.timeoutHelper = new TimeoutHelper(timeout);

                Uri addressUri = new Uri(address);
                this.parent.node = addressUri.PathAndQuery;
                int port = addressUri.Port;
                if (port == -1)
                {
                    port = AmqpConstants.DefaultPort;
                }

                TcpTransportSettings tcpSettings = new TcpTransportSettings();
                tcpSettings.TcpBacklog = 20;
                tcpSettings.TcpBufferSize = 4096;
                tcpSettings.SetEndPoint(addressUri.Host, port, listen);
                TransportSettings transportSettings = tcpSettings;

                this.Start(transportSettings);
            }
コード例 #6
0
 public TcpTransportListener(TcpTransportSettings transportSettings)
 {
     this.transportSettings = transportSettings;
 }
コード例 #7
0
 internal TcpTransportInitiator(TcpTransportSettings transportSettings)
 {
     this.transportSettings = transportSettings;
 }
コード例 #8
0
ファイル: Container.cs プロジェクト: modulexcite/IL2JS
            public void Open()
            {
                int port = this.container.addressUri.Port;
                if (port == -1)
                {
                    port = AmqpConstants.DefaultPort;
                }

                TcpTransportSettings tcpSettings = new TcpTransportSettings();
                tcpSettings.TcpBacklog = 20;
                tcpSettings.TcpBufferSize = 4096;
                tcpSettings.SetEndPoint(this.container.addressUri.Host, port, true);
                TransportSettings transportSettings = tcpSettings;

                this.listener = transportSettings.CreateListener();
                this.listener.Listen(this.OnAcceptTransport);
            }
コード例 #9
0
ファイル: Container.cs プロジェクト: modulexcite/IL2JS
            public OpenContainerAsyncResult(Container parent, AsyncCallback callback, object state)
                : base(callback, state)
            {
                this.parent = parent;

                int port = this.parent.addressUri.Port;
                if (port == -1)
                {
                    port = AmqpConstants.DefaultPort;
                }

                TcpTransportSettings tcpSettings = new TcpTransportSettings();
                tcpSettings.TcpBacklog = 20;
                tcpSettings.TcpBufferSize = 4096;
                tcpSettings.SetEndPoint(this.parent.addressUri.Host, port, false);
                TransportSettings transportSettings = tcpSettings;

                TransportInitiator initiator = transportSettings.CreateInitiator();
                TransportAsyncCallbackArgs args = new TransportAsyncCallbackArgs();
                args.CompletedCallback = onTransport;
                args.UserToken = this;
                if (!initiator.ConnectAsync(TimeSpan.MaxValue, args))
                {
                    OnTransport(args);
                }
            }
コード例 #10
0
 internal TcpTransportInitiator(TcpTransportSettings transportSettings)
 {
     this.transportSettings = transportSettings;
 }
コード例 #11
0
 public TcpTransportListener(TcpTransportSettings transportSettings) : base("tcp-listener")
 {
     this.acceptTransportLoop = new Action <object>(this.AcceptTransportLoop);
     this.transportSettings   = transportSettings;
 }
コード例 #12
0
 public TcpTransportListener(TcpTransportSettings transportSettings)
 {
     this.transportSettings = transportSettings;
 }