Jo Shields 3c1f479b9d Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
2015-04-07 09:35:12 +01:00

60 lines
2.0 KiB
C#

//----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
namespace System.ServiceModel.Channels
{
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Globalization;
using System.ServiceModel.Diagnostics;
class TcpConnectionPoolRegistry : ConnectionPoolRegistry
{
public TcpConnectionPoolRegistry()
: base()
{
}
protected override ConnectionPool CreatePool(IConnectionOrientedTransportChannelFactorySettings settings)
{
ITcpChannelFactorySettings tcpSettings = (ITcpChannelFactorySettings)settings;
return new TcpConnectionPool(tcpSettings);
}
class TcpConnectionPool : ConnectionPool
{
public TcpConnectionPool(ITcpChannelFactorySettings settings)
: base(settings, settings.LeaseTimeout)
{
}
protected override string GetPoolKey(EndpointAddress address, Uri via)
{
int port = via.Port;
if (port == -1)
{
port = TcpUri.DefaultPort;
}
string normalizedHost = via.DnsSafeHost.ToUpperInvariant();
return string.Format(CultureInfo.InvariantCulture, @"[{0}, {1}]", normalizedHost, port);
}
public override bool IsCompatible(IConnectionOrientedTransportChannelFactorySettings settings)
{
ITcpChannelFactorySettings tcpSettings = (ITcpChannelFactorySettings)settings;
return (
(this.LeaseTimeout == tcpSettings.LeaseTimeout) &&
base.IsCompatible(settings)
);
}
}
}
}