public ListenerConnectionDemuxer(IConnectionListener listener, 
     TransportType transportType,
     int maxAccepts, int initialMaxPendingConnections,
     TimeSpan channelInitializationTimeout,
     ConnectionHandleDuplicated connectionHandleDuplicated)
 {
     this.transportType = transportType;
     this.connectionReaders = new List<InitialServerConnectionReader>();
     this.connectionHandleDuplicated = connectionHandleDuplicated;
     this.acceptor = new ConnectionAcceptor(listener, maxAccepts, initialMaxPendingConnections, OnConnectionAvailable);
     this.channelInitializationTimeout = channelInitializationTimeout;
     this.onConnectionClosed = new ConnectionClosedCallback(OnConnectionClosed);
     this.onViaDecoded = new ViaDecodedCallback(OnViaDecoded);
 }
Ejemplo n.º 2
0
 public ListenerConnectionDemuxer(IConnectionListener listener,
                                  TransportType transportType,
                                  int maxAccepts, int initialMaxPendingConnections,
                                  TimeSpan channelInitializationTimeout,
                                  ConnectionHandleDuplicated connectionHandleDuplicated)
 {
     this.transportType              = transportType;
     this.connectionReaders          = new List <InitialServerConnectionReader>();
     this.connectionHandleDuplicated = connectionHandleDuplicated;
     this.acceptor = new ConnectionAcceptor(listener, maxAccepts, initialMaxPendingConnections, OnConnectionAvailable);
     this.channelInitializationTimeout = channelInitializationTimeout;
     this.onConnectionClosed           = new ConnectionClosedCallback(OnConnectionClosed);
     this.onViaDecoded = new ViaDecodedCallback(OnViaDecoded);
 }
Ejemplo n.º 3
0
        internal ListenerConnectionDemuxer Go(IConnectionListener connectionListener)
        {
            if (DiagnosticUtility.ShouldTraceInformation)
            {
                ListenerTraceUtility.TraceEvent(TraceEventType.Information, ListenerTraceCode.TransportListenerListenRequest, SR.GetString(SR.TraceCodeTransportListenerListenRequest), this);
            }

            ConnectionHandleDuplicated onDupHandle       = new ConnectionHandleDuplicated(OnDupHandle);
            ListenerConnectionDemuxer  connectionDemuxer = null;

            if (transportType == TransportType.Tcp)
            {
                connectionDemuxer = new ListenerConnectionDemuxer(connectionListener,
                                                                  transportType,
                                                                  ListenerConfig.NetTcp.MaxPendingAccepts,
                                                                  ListenerConfig.NetTcp.MaxPendingConnections,
                                                                  ListenerConfig.NetTcp.ReceiveTimeout,
                                                                  onDupHandle);
            }
            else if (transportType == TransportType.NamedPipe)
            {
                connectionDemuxer = new ListenerConnectionDemuxer(connectionListener,
                                                                  transportType,
                                                                  ListenerConfig.NetPipe.MaxPendingAccepts,
                                                                  ListenerConfig.NetPipe.MaxPendingConnections,
                                                                  ListenerConfig.NetPipe.ReceiveTimeout,
                                                                  onDupHandle);
            }

            if (ExecutionContext.IsFlowSuppressed())
            {
                if (SecurityContext.IsFlowSuppressed())
                {
                    connectionDemuxer.StartDemuxing();
                }
                else
                {
                    using (SecurityContext.SuppressFlow())
                    {
                        connectionDemuxer.StartDemuxing();
                    }
                }
            }
            else
            {
                using (ExecutionContext.SuppressFlow())
                {
                    if (SecurityContext.IsFlowSuppressed())
                    {
                        connectionDemuxer.StartDemuxing();
                    }
                    else
                    {
                        using (SecurityContext.SuppressFlow())
                        {
                            connectionDemuxer.StartDemuxing();
                        }
                    }
                }
            }

            if (DiagnosticUtility.ShouldTraceInformation)
            {
                ListenerTraceUtility.TraceEvent(TraceEventType.Information, ListenerTraceCode.TransportListenerListening, SR.GetString(SR.TraceCodeTransportListenerListening), this);
            }

            return(connectionDemuxer);
        }
        internal ListenerConnectionDemuxer Go(IConnectionListener connectionListener)
        {
            if (DiagnosticUtility.ShouldTraceInformation)
            {
                ListenerTraceUtility.TraceEvent(TraceEventType.Information, ListenerTraceCode.TransportListenerListenRequest, SR.GetString(SR.TraceCodeTransportListenerListenRequest), this);
            }

            ConnectionHandleDuplicated onDupHandle = new ConnectionHandleDuplicated(OnDupHandle);
            ListenerConnectionDemuxer connectionDemuxer = null;

            if (transportType == TransportType.Tcp)
            {
                connectionDemuxer = new ListenerConnectionDemuxer(connectionListener,
                    transportType,
                    ListenerConfig.NetTcp.MaxPendingAccepts,
                    ListenerConfig.NetTcp.MaxPendingConnections,
                    ListenerConfig.NetTcp.ReceiveTimeout,
                    onDupHandle);
            }
            else if (transportType == TransportType.NamedPipe)
            {
                connectionDemuxer = new ListenerConnectionDemuxer(connectionListener,
                    transportType,
                    ListenerConfig.NetPipe.MaxPendingAccepts,
                    ListenerConfig.NetPipe.MaxPendingConnections,
                    ListenerConfig.NetPipe.ReceiveTimeout,
                    onDupHandle);
            }

            if (ExecutionContext.IsFlowSuppressed())
            {
                if (SecurityContext.IsFlowSuppressed())
                {
                    connectionDemuxer.StartDemuxing();
                }
                else
                {
                    using (SecurityContext.SuppressFlow())
                    {
                        connectionDemuxer.StartDemuxing();
                    }
                }
            }
            else
            {
                using (ExecutionContext.SuppressFlow())
                {
                    if (SecurityContext.IsFlowSuppressed())
                    {
                        connectionDemuxer.StartDemuxing();
                    }
                    else
                    {
                        using (SecurityContext.SuppressFlow())
                        {
                            connectionDemuxer.StartDemuxing();
                        }
                    }
                }
            }

            if (DiagnosticUtility.ShouldTraceInformation)
            {
                ListenerTraceUtility.TraceEvent(TraceEventType.Information, ListenerTraceCode.TransportListenerListening, SR.GetString(SR.TraceCodeTransportListenerListening), this);
            }

            return connectionDemuxer;
        }