e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
60 lines
2.0 KiB
C#
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)
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|