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; }
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; }
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; }
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); }
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)); }
protected override ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings) { Fx.Assert(settings is IPipeTransportFactorySettings, "NamedPipeConnectionPool requires an IPipeTransportFactorySettings."); return(new NamedPipeConnectionPool((IPipeTransportFactorySettings)settings)); }
public NamedPipeConnectionPool(IConnectionOrientedTransportChannelFactorySettings settings) : base(settings, TimeSpan.MaxValue) { this.pipeNameCache = new NamedPipeConnectionPoolRegistry.PipeNameCache(); }
protected override ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings) { ITcpChannelFactorySettings tcpSettings = (ITcpChannelFactorySettings)settings; return new TcpConnectionPool(tcpSettings); }
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); }
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; }