public ConnectionPool Lookup(IConnectionOrientedTransportChannelFactorySettings settings)
 {
     ConnectionPool item = null;
     string connectionPoolGroupName = settings.ConnectionPoolGroupName;
     lock (this.ThisLock)
     {
         List<ConnectionPool> list = null;
         if (this.registry.TryGetValue(connectionPoolGroupName, out list))
         {
             for (int i = 0; i < list.Count; i++)
             {
                 if (list[i].IsCompatible(settings) && list[i].TryOpen())
                 {
                     item = list[i];
                     break;
                 }
             }
         }
         else
         {
             list = new List<ConnectionPool>();
             this.registry.Add(connectionPoolGroupName, list);
         }
         if (item == null)
         {
             item = this.CreatePool(settings);
             list.Add(item);
         }
     }
     return item;
 }
        // NOTE: performs the open on the pool for you
        public ConnectionPool Lookup(IConnectionOrientedTransportChannelFactorySettings settings)
        {
            ConnectionPool result = null;
            string key = settings.ConnectionPoolGroupName;

            lock (ThisLock)
            {
                List<ConnectionPool> registryEntry = null;

                if (_registry.TryGetValue(key, out registryEntry))
                {
                    for (int i = 0; i < registryEntry.Count; i++)
                    {
                        if (registryEntry[i].IsCompatible(settings) && registryEntry[i].TryOpen())
                        {
                            result = registryEntry[i];
                            break;
                        }
                    }
                }
                else
                {
                    registryEntry = new List<ConnectionPool>();
                    _registry.Add(key, registryEntry);
                }

                if (result == null)
                {
                    result = CreatePool(settings);
                    registryEntry.Add(result);
                }
            }

            return result;
        }
Beispiel #3
0
 public override bool IsCompatible(IConnectionOrientedTransportChannelFactorySettings settings)
 {
     ITcpChannelFactorySettings tcpSettings = (ITcpChannelFactorySettings)settings;
     return (
         (this.LeaseTimeout == tcpSettings.LeaseTimeout) &&
         base.IsCompatible(settings)
         );
 }
 public StreamedFramingRequestChannel(ChannelManagerBase factory, IConnectionOrientedTransportChannelFactorySettings settings, EndpointAddress remoteAddresss, Uri via, IConnectionInitiator connectionInitiator, ConnectionPool connectionPool) : base(factory, remoteAddresss, via, settings.ManualAddressing)
 {
     this.settings = settings;
     this.connectionInitiator = connectionInitiator;
     this.connectionPool = connectionPool;
     this.messageEncoder = settings.MessageEncoderFactory.Encoder;
     this.upgrade = settings.Upgrade;
 }
Beispiel #5
0
 public virtual bool IsCompatible(IConnectionOrientedTransportChannelFactorySettings settings)
 {
     return(
         (Name == settings.ConnectionPoolGroupName) &&
         (_connectionBufferSize == settings.ConnectionBufferSize) &&
         (MaxIdleConnectionPoolCount == settings.MaxOutboundConnectionsPerEndpoint) &&
         (IdleTimeout == settings.IdleTimeout) &&
         (_maxOutputDelay == settings.MaxOutputDelay)
         );
 }
        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;
        }
Beispiel #7
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;
     this.MessageEncoder   = settings.MessageEncoderFactory.CreateSessionEncoder();
     _upgrade              = settings.Upgrade;
     _flowIdentity         = flowIdentity;
     _connectionPoolHelper = new DuplexConnectionPoolHelper(this, connectionPool, connectionInitiator);
 }
Beispiel #8
0
        public ConnectionPool Lookup(IConnectionOrientedTransportChannelFactorySettings settings)
        {
            List <ConnectionPool> connectionPools;
            ConnectionPool        item     = null;
            string connectionPoolGroupName = settings.ConnectionPoolGroupName;

            lock (this.ThisLock)
            {
                if (!this.registry.TryGetValue(connectionPoolGroupName, out connectionPools))
                {
                    connectionPools = new List <ConnectionPool>();
                    this.registry.Add(connectionPoolGroupName, connectionPools);
                }
                else
                {
                    int num = 0;
                    while (num < connectionPools.Count)
                    {
                        if (!connectionPools[num].IsCompatible(settings) || !connectionPools[num].TryOpen())
                        {
                            num++;
                        }
                        else
                        {
                            item = connectionPools[num];
                            goto Label0;
                        }
                    }
                }
Label0:
                if (item == null)
                {
                    item = this.CreatePool(settings);
                    connectionPools.Add(item);
                }
            }
            return(item);
        }
        protected override ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings)
        {
            ITcpChannelFactorySettings tcpSettings = (ITcpChannelFactorySettings)settings;

            return(new TcpConnectionPool(tcpSettings));
        }
 protected abstract ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings);
            public override bool IsCompatible(IConnectionOrientedTransportChannelFactorySettings settings)
            {
                ITcpChannelFactorySettings settings2 = (ITcpChannelFactorySettings)settings;

                return((base.LeaseTimeout == settings2.LeaseTimeout) && base.IsCompatible(settings));
            }
Beispiel #12
0
 protected override ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings)
 {
     Fx.Assert(settings is IPipeTransportFactorySettings, "NamedPipeConnectionPool requires an IPipeTransportFactorySettings.");
     return(new NamedPipeConnectionPool((IPipeTransportFactorySettings)settings));
 }
Beispiel #13
0
 public NamedPipeConnectionPool(IConnectionOrientedTransportChannelFactorySettings settings) : base(settings, TimeSpan.MaxValue)
 {
     this.pipeNameCache = new NamedPipeConnectionPoolRegistry.PipeNameCache();
 }
 protected abstract ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings);
Beispiel #15
0
 protected override ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings)
 {
     ITcpChannelFactorySettings tcpSettings = (ITcpChannelFactorySettings)settings;
     return new TcpConnectionPool(tcpSettings);
 }
Beispiel #16
0
 protected override ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings)
 {
     return(new NamedPipeConnectionPool(settings));
 }
 protected override ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings)
 {
     Fx.Assert(settings is IPipeTransportFactorySettings, "NamedPipeConnectionPool requires an IPipeTransportFactorySettings.");
     return new NamedPipeConnectionPool((IPipeTransportFactorySettings)settings);
 }
Beispiel #18
0
 protected override ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings)
 {
     return(new SocketConnectionPoolRegistry.SocketConnectionConnectionPool((ISocketConnectionChannelFactorySettings)settings));
 }
 protected ConnectionPool(IConnectionOrientedTransportChannelFactorySettings settings, TimeSpan leaseTimeout) : base(settings.MaxOutboundConnectionsPerEndpoint, settings.IdleTimeout, leaseTimeout)
 {
     this.connectionBufferSize = settings.ConnectionBufferSize;
     this.maxOutputDelay       = settings.MaxOutputDelay;
     this.name = settings.ConnectionPoolGroupName;
 }