e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
114 lines
4.8 KiB
C#
114 lines
4.8 KiB
C#
//----------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//----------------------------------------------------------------
|
|
|
|
namespace System.ServiceModel.Discovery
|
|
{
|
|
using System.Collections.ObjectModel;
|
|
using System.Runtime;
|
|
using System.ServiceModel.Description;
|
|
using System.ServiceModel.Discovery.Version11;
|
|
using System.ServiceModel.Discovery.VersionApril2005;
|
|
using System.ServiceModel.Discovery.VersionCD1;
|
|
|
|
class DiscoveryUtility
|
|
{
|
|
public static Collection<EndpointDiscoveryMetadata> ToEndpointDiscoveryMetadataCollection(
|
|
Collection<EndpointDiscoveryMetadataApril2005> endpointDiscoveryMetadataApril2005Collection)
|
|
{
|
|
Collection<EndpointDiscoveryMetadata> endpointDiscoveryMetadataCollection = new Collection<EndpointDiscoveryMetadata>();
|
|
foreach (EndpointDiscoveryMetadataApril2005 endpointDiscoveryMetadataApril2005 in endpointDiscoveryMetadataApril2005Collection)
|
|
{
|
|
endpointDiscoveryMetadataCollection.Add(endpointDiscoveryMetadataApril2005.ToEndpointDiscoveryMetadata());
|
|
}
|
|
return endpointDiscoveryMetadataCollection;
|
|
}
|
|
|
|
public static Collection<EndpointDiscoveryMetadata> ToEndpointDiscoveryMetadataCollection(
|
|
Collection<EndpointDiscoveryMetadataCD1> endpointDiscoveryMetadataCD1Collection)
|
|
{
|
|
Collection<EndpointDiscoveryMetadata> endpointDiscoveryMetadataCollection = new Collection<EndpointDiscoveryMetadata>();
|
|
foreach (EndpointDiscoveryMetadataCD1 endpointDiscoveryMetadataCD1 in endpointDiscoveryMetadataCD1Collection)
|
|
{
|
|
endpointDiscoveryMetadataCollection.Add(endpointDiscoveryMetadataCD1.ToEndpointDiscoveryMetadata());
|
|
}
|
|
return endpointDiscoveryMetadataCollection;
|
|
}
|
|
|
|
public static Collection<EndpointDiscoveryMetadata> ToEndpointDiscoveryMetadataCollection(
|
|
Collection<EndpointDiscoveryMetadata11> endpointDiscoveryMetadata11Collection)
|
|
{
|
|
Collection<EndpointDiscoveryMetadata> endpointDiscoveryMetadataCollection = new Collection<EndpointDiscoveryMetadata>();
|
|
foreach (EndpointDiscoveryMetadata11 endpointDiscoveryMetadata11 in endpointDiscoveryMetadata11Collection)
|
|
{
|
|
endpointDiscoveryMetadataCollection.Add(endpointDiscoveryMetadata11.ToEndpointDiscoveryMetadata());
|
|
}
|
|
return endpointDiscoveryMetadataCollection;
|
|
}
|
|
|
|
public static ContractDescription GetContract(Type contractType)
|
|
{
|
|
Fx.Assert(contractType != null, "The discoveryContractType attribute must not be null.");
|
|
|
|
ContractDescription discoveryContract = ContractDescription.GetContract(contractType);
|
|
OperationBehaviorAttribute operationBehaviorAttribute;
|
|
foreach (OperationDescription operationDescription in discoveryContract.Operations)
|
|
{
|
|
operationBehaviorAttribute = operationDescription.Behaviors.Find<OperationBehaviorAttribute>();
|
|
if (operationBehaviorAttribute == null)
|
|
{
|
|
operationBehaviorAttribute = new OperationBehaviorAttribute();
|
|
operationDescription.Behaviors.Add(operationBehaviorAttribute);
|
|
}
|
|
|
|
operationBehaviorAttribute.PreferAsyncInvocation = true;
|
|
}
|
|
|
|
return discoveryContract;
|
|
}
|
|
|
|
public static DiscoveryMessageSequence ToDiscoveryMessageSequenceOrNull(DiscoveryMessageSequenceApril2005 messageSequence)
|
|
{
|
|
if (messageSequence == null)
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
return messageSequence.ToDiscoveryMessageSequence();
|
|
}
|
|
}
|
|
|
|
public static DiscoveryMessageSequence ToDiscoveryMessageSequenceOrNull(DiscoveryMessageSequenceCD1 messageSequence)
|
|
{
|
|
if (messageSequence == null)
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
return messageSequence.ToDiscoveryMessageSequence();
|
|
}
|
|
}
|
|
|
|
public static DiscoveryMessageSequence ToDiscoveryMessageSequenceOrNull(DiscoveryMessageSequence11 messageSequence)
|
|
{
|
|
if (messageSequence == null)
|
|
{
|
|
return null;
|
|
}
|
|
else
|
|
{
|
|
return messageSequence.ToDiscoveryMessageSequence();
|
|
}
|
|
}
|
|
|
|
public static bool IsCompatible(OperationContext context, IContextChannel channel)
|
|
{
|
|
return ((context != null) &&
|
|
(context.InternalServiceChannel != null) &&
|
|
(object.ReferenceEquals(context.InternalServiceChannel.Proxy, channel)));
|
|
}
|
|
}
|
|
}
|