Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

235 lines
9.5 KiB
C#
Executable File

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Discovery.Version11;
using System.ServiceModel.Discovery.VersionApril2005;
using System.ServiceModel.Discovery.VersionCD1;
namespace System.ServiceModel.Discovery
{
[MonoTODO]
public abstract class DiscoveryProxy : IDiscoveryProxyContract11, IDiscoveryProxyContractApril2005, IDiscoveryProxyContractCD1, IDiscoveryTargetContract11, IDiscoveryTargetContractApril2005, IDiscoveryTargetContractCD1
{
protected DiscoveryProxy ()
: this (new DiscoveryMessageSequenceGenerator ())
{
}
protected DiscoveryProxy (DiscoveryMessageSequenceGenerator messageSequenceGenerator)
: this (messageSequenceGenerator, 0)
{
}
protected DiscoveryProxy (DiscoveryMessageSequenceGenerator messageSequenceGenerator, int duplicateMessageHistoryLength)
{
}
internal DiscoveryMessageSequenceGenerator DiscoveryMessageSequenceGenerator { get; private set; }
internal int DuplicateMessageHistoryLength { get; private set; }
protected virtual IAsyncResult BeginShouldRedirectFind (FindCriteria resolveCriteria, AsyncCallback callback, Object state)
{
throw new NotImplementedException ();
}
protected virtual IAsyncResult BeginShouldRedirectResolve (ResolveCriteria findCriteria, AsyncCallback callback, Object state)
{
throw new NotImplementedException ();
}
protected virtual bool EndShouldRedirectFind (IAsyncResult result, out Collection<EndpointDiscoveryMetadata> redirectionEndpoints)
{
throw new NotImplementedException ();
}
protected virtual bool EndShouldRedirectResolve (IAsyncResult result, out Collection<EndpointDiscoveryMetadata> redirectionEndpoints)
{
throw new NotImplementedException ();
}
protected abstract IAsyncResult OnBeginFind (FindRequestContext findRequestContext, AsyncCallback callback, Object state);
protected abstract IAsyncResult OnBeginOfflineAnnouncement (DiscoveryMessageSequence messageSequence, EndpointDiscoveryMetadata endpointDiscoveryMetadata, AsyncCallback callback, Object state);
protected abstract IAsyncResult OnBeginOnlineAnnouncement (DiscoveryMessageSequence messageSequence, EndpointDiscoveryMetadata endpointDiscoveryMetadata, AsyncCallback callback, Object state);
protected abstract IAsyncResult OnBeginResolve (ResolveCriteria resolveCriteria, AsyncCallback callback, Object state);
protected abstract void OnEndFind (IAsyncResult result);
protected abstract void OnEndOfflineAnnouncement (IAsyncResult result);
protected abstract void OnEndOnlineAnnouncement (IAsyncResult result);
protected abstract EndpointDiscoveryMetadata OnEndResolve (IAsyncResult result);
#region service contract implementation
// IDiscoveryProxyContract11
IAsyncResult IDiscoveryProxyContract11.BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state)
{
return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
}
MessageContracts11.FindResponse IDiscoveryProxyContract11.EndFind (IAsyncResult result)
{
OnEndFind (result);
throw new NotImplementedException ();
}
IAsyncResult IDiscoveryProxyContract11.BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state)
{
return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
}
MessageContracts11.ResolveResponse IDiscoveryProxyContract11.EndResolve (IAsyncResult result)
{
var ret = OnEndResolve (result);
return new MessageContracts11.ResolveResponse () { MessageSequence = new DiscoveryMessageSequence11 (DiscoveryMessageSequenceGenerator.Next ()), Body = new EndpointDiscoveryMetadata11 (ret) };
}
// IDiscoveryProxyContractApril2005
IAsyncResult IDiscoveryProxyContractApril2005.BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state)
{
return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
}
MessageContractsApril2005.FindResponse IDiscoveryProxyContractApril2005.EndFind (IAsyncResult result)
{
OnEndFind (result);
throw new NotImplementedException ();
}
IAsyncResult IDiscoveryProxyContractApril2005.BeginResolve (MessageContractsApril2005.ResolveRequest message, AsyncCallback callback, object state)
{
return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
}
MessageContractsApril2005.ResolveResponse IDiscoveryProxyContractApril2005.EndResolve (IAsyncResult result)
{
var ret = OnEndResolve (result);
return new MessageContractsApril2005.ResolveResponse () { MessageSequence = new DiscoveryMessageSequenceApril2005 (DiscoveryMessageSequenceGenerator.Next ()), Body = new EndpointDiscoveryMetadataApril2005 (ret) };
}
// IDiscoveryProxyContractCD1
IAsyncResult IDiscoveryProxyContractCD1.BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state)
{
return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
}
MessageContractsCD1.FindResponse IDiscoveryProxyContractCD1.EndFind (IAsyncResult result)
{
OnEndFind (result);
throw new NotImplementedException ();
}
IAsyncResult IDiscoveryProxyContractCD1.BeginResolve (MessageContractsCD1.ResolveRequest message, AsyncCallback callback, object state)
{
return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
}
MessageContractsCD1.ResolveResponse IDiscoveryProxyContractCD1.EndResolve (IAsyncResult result)
{
var ret = OnEndResolve (result);
return new MessageContractsCD1.ResolveResponse () { MessageSequence = new DiscoveryMessageSequenceCD1 (DiscoveryMessageSequenceGenerator.Next ()), Body = new EndpointDiscoveryMetadataCD1 (ret) };
}
// IDiscoveryTargetContract11
IAsyncResult IDiscoveryTargetContract11.BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state)
{
return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
}
void IDiscoveryTargetContract11.EndFind (IAsyncResult result)
{
OnEndFind (result);
}
IAsyncResult IDiscoveryTargetContract11.BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state)
{
return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
}
void IDiscoveryTargetContract11.EndResolve (IAsyncResult result)
{
OnEndResolve (result);
}
IAsyncResult IDiscoveryTargetContract11.BeginOnlineAnnouncement (MessageContracts11.OnlineAnnouncement msg, AsyncCallback callback, object state)
{
var edm = msg.EndpointDiscoveryMetadata != null ? msg.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata () : null;
return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), edm, callback, state);
}
void IDiscoveryTargetContract11.EndOnlineAnnouncement (IAsyncResult result)
{
OnEndOnlineAnnouncement (result);
}
// IDiscoveryTargetContractApril2005
IAsyncResult IDiscoveryTargetContractApril2005.BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state)
{
return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
}
void IDiscoveryTargetContractApril2005.EndFind (IAsyncResult result)
{
OnEndFind (result);
}
IAsyncResult IDiscoveryTargetContractApril2005.BeginResolve (MessageContractsApril2005.ResolveRequest message, AsyncCallback callback, object state)
{
return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
}
void IDiscoveryTargetContractApril2005.EndResolve (IAsyncResult result)
{
OnEndResolve (result);
}
IAsyncResult IDiscoveryTargetContractApril2005.BeginOnlineAnnouncement (MessageContractsApril2005.OnlineAnnouncement msg, AsyncCallback callback, object state)
{
var edm = msg.EndpointDiscoveryMetadata != null ? msg.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata () : null;
return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), edm, callback, state);
}
void IDiscoveryTargetContractApril2005.EndOnlineAnnouncement (IAsyncResult result)
{
OnEndOnlineAnnouncement (result);
}
// IDiscoveryTargetContractCD1
IAsyncResult IDiscoveryTargetContractCD1.BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state)
{
return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
}
void IDiscoveryTargetContractCD1.EndFind (IAsyncResult result)
{
OnEndFind (result);
}
IAsyncResult IDiscoveryTargetContractCD1.BeginResolve (MessageContractsCD1.ResolveRequest message, AsyncCallback callback, object state)
{
return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
}
void IDiscoveryTargetContractCD1.EndResolve (IAsyncResult result)
{
OnEndResolve (result);
}
IAsyncResult IDiscoveryTargetContractCD1.BeginOnlineAnnouncement (MessageContractsCD1.OnlineAnnouncement msg, AsyncCallback callback, object state)
{
var edm = msg.EndpointDiscoveryMetadata != null ? msg.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata () : null;
return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), edm, callback, state);
}
void IDiscoveryTargetContractCD1.EndOnlineAnnouncement (IAsyncResult result)
{
OnEndOnlineAnnouncement (result);
}
#endregion
}
}