public StreamedFramingRequestChannel(ChannelManagerBase factory, IConnectionOrientedTransportChannelFactorySettings settings,
                                             EndpointAddress remoteAddress, Uri via, IConnectionInitiator connectionInitiator, ConnectionPool connectionPool)
            : base(factory, remoteAddress, via, settings.ManualAddressing)
        {
            _settings            = settings;
            _connectionInitiator = connectionInitiator;
            _connectionPool      = connectionPool;

            _messageEncoder = settings.MessageEncoderFactory.Encoder;
            _upgrade        = settings.Upgrade;
        }
        private bool GetUpgradeAndConnectionPool(out StreamUpgradeProvider upgradeCopy, out ConnectionPool poolCopy)
        {
            if (_upgrade != null || _connectionPool != null)
            {
                lock (ThisLock)
                {
                    if (_upgrade != null || _connectionPool != null)
                    {
                        upgradeCopy     = _upgrade;
                        poolCopy        = _connectionPool;
                        _upgrade        = null;
                        _connectionPool = null;
                        return(true);
                    }
                }
            }

            upgradeCopy = null;
            poolCopy    = null;
            return(false);
        }
 protected override void OnOpening()
 {
     base.OnOpening();
     _connectionPool = GetConnectionPool(); // returns an already opened pool
     Contract.Assert(_connectionPool != null, "ConnectionPool should always be found");
 }
Example #4
0
 public ClientFramingDuplexSessionChannel(ChannelManagerBase factory, IConnectionOrientedTransportChannelFactorySettings settings,
                                          EndpointAddress remoteAddress, Uri via, IConnectionInitiator connectionInitiator, ConnectionPool connectionPool,
                                          bool exposeConnectionProperty, bool flowIdentity)
     : base(factory, settings, remoteAddress, via, exposeConnectionProperty)
 {
     _settings             = settings;
     MessageEncoder        = settings.MessageEncoderFactory.CreateSessionEncoder();
     _upgrade              = settings.Upgrade;
     _flowIdentity         = flowIdentity;
     _connectionPoolHelper = new DuplexConnectionPoolHelper(this, connectionPool, connectionInitiator);
 }
 internal abstract void ReleaseConnectionPool(ConnectionPool pool, TimeSpan timeout);
Example #6
0
 public ConnectionPoolHelper(ConnectionPool connectionPool, IConnectionInitiator connectionInitiator, Uri via)
 {
     this.connectionInitiator = connectionInitiator;
     this.connectionPool      = connectionPool;
     this.via = via;
 }
Example #7
0
 public ConnectionPoolHelper(ConnectionPool connectionPool, IConnectionInitiator connectionInitiator, Uri via)
 {
     _connectionInitiator = connectionInitiator;
     _connectionPool      = connectionPool;
     _via = via;
 }
 internal override void ReleaseConnectionPool(ConnectionPool pool, TimeSpan timeout)
 {
     connectionPoolRegistry.Release(pool, timeout);
 }
Example #9
0
 public DuplexConnectionPoolHelper(ClientFramingDuplexSessionChannel channel, ConnectionPool connectionPool, IConnectionInitiator connectionInitiator) : base(connectionPool, connectionInitiator, channel.Via)
 {
     this.channel  = channel;
     this.preamble = channel.CreatePreamble();
 }
 internal override void ReleaseConnectionPool(ConnectionPool pool, TimeSpan timeout)
 {
     NamedPipeChannelFactory <TChannel> .connectionPoolRegistry.Release(pool, timeout);
 }