e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
80 lines
2.3 KiB
C#
80 lines
2.3 KiB
C#
//----------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//----------------------------------------------------------------
|
|
|
|
namespace System.ServiceModel.Routing
|
|
{
|
|
using System.ServiceModel.Description;
|
|
|
|
sealed class RoutingEndpointTrait
|
|
{
|
|
public RoutingEndpointTrait(Type routerContract, ServiceEndpoint endpoint, OperationContext operationContext)
|
|
{
|
|
if (routerContract == typeof(IDuplexSessionRouter))
|
|
{
|
|
IDuplexRouterCallback callbackSession = operationContext.GetCallbackChannel<IDuplexRouterCallback>();
|
|
this.CallbackInstance = callbackSession;
|
|
}
|
|
this.Endpoint = endpoint;
|
|
this.RouterContract = routerContract;
|
|
}
|
|
|
|
public IDuplexRouterCallback CallbackInstance
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public ServiceEndpoint Endpoint
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public Type RouterContract
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
RoutingEndpointTrait other = obj as RoutingEndpointTrait;
|
|
if (other == null)
|
|
{
|
|
return false;
|
|
}
|
|
if (!object.ReferenceEquals(this.Endpoint, other.Endpoint))
|
|
{
|
|
return false;
|
|
}
|
|
if (this.RouterContract != other.RouterContract)
|
|
{
|
|
return false;
|
|
}
|
|
if (!object.ReferenceEquals(this.CallbackInstance, other.CallbackInstance))
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
int num = 0;
|
|
num ^= this.Endpoint.GetHashCode();
|
|
num ^= this.RouterContract.GetHashCode();
|
|
if (this.CallbackInstance != null)
|
|
{
|
|
num ^= this.CallbackInstance.GetHashCode();
|
|
}
|
|
return num;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return this.Endpoint.Name + ";" + this.Endpoint.Binding.Name + ";" + this.Endpoint.Address.Uri.ToString();
|
|
}
|
|
}
|
|
}
|