2 using System.Collections.Generic;
3 using System.Collections.ObjectModel;
4 using System.ServiceModel;
5 using System.ServiceModel.Channels;
6 using System.ServiceModel.Description;
7 using System.ServiceModel.Dispatcher;
8 using System.ServiceModel.Discovery.Version11;
9 using System.ServiceModel.Discovery.VersionApril2005;
10 using System.ServiceModel.Discovery.VersionCD1;
12 namespace System.ServiceModel.Discovery
15 public abstract class DiscoveryProxy : IDiscoveryProxyContract11, IDiscoveryProxyContractApril2005, IDiscoveryProxyContractCD1, IDiscoveryTargetContract11, IDiscoveryTargetContractApril2005, IDiscoveryTargetContractCD1
17 protected DiscoveryProxy ()
18 : this (new DiscoveryMessageSequenceGenerator ())
22 protected DiscoveryProxy (DiscoveryMessageSequenceGenerator messageSequenceGenerator)
23 : this (messageSequenceGenerator, 0)
27 protected DiscoveryProxy (DiscoveryMessageSequenceGenerator messageSequenceGenerator, int duplicateMessageHistoryLength)
31 internal DiscoveryMessageSequenceGenerator DiscoveryMessageSequenceGenerator { get; private set; }
33 internal int DuplicateMessageHistoryLength { get; private set; }
35 protected virtual IAsyncResult BeginShouldRedirectFind (FindCriteria resolveCriteria, AsyncCallback callback, Object state)
37 throw new NotImplementedException ();
40 protected virtual IAsyncResult BeginShouldRedirectResolve (ResolveCriteria findCriteria, AsyncCallback callback, Object state)
42 throw new NotImplementedException ();
45 protected virtual bool EndShouldRedirectFind (IAsyncResult result, out Collection<EndpointDiscoveryMetadata> redirectionEndpoints)
47 throw new NotImplementedException ();
50 protected virtual bool EndShouldRedirectResolve (IAsyncResult result, out Collection<EndpointDiscoveryMetadata> redirectionEndpoints)
52 throw new NotImplementedException ();
55 protected abstract IAsyncResult OnBeginFind (FindRequestContext findRequestContext, AsyncCallback callback, Object state);
56 protected abstract IAsyncResult OnBeginOfflineAnnouncement (DiscoveryMessageSequence messageSequence, EndpointDiscoveryMetadata endpointDiscoveryMetadata, AsyncCallback callback, Object state);
57 protected abstract IAsyncResult OnBeginOnlineAnnouncement (DiscoveryMessageSequence messageSequence, EndpointDiscoveryMetadata endpointDiscoveryMetadata, AsyncCallback callback, Object state);
58 protected abstract IAsyncResult OnBeginResolve (ResolveCriteria resolveCriteria, AsyncCallback callback, Object state);
59 protected abstract void OnEndFind (IAsyncResult result);
60 protected abstract void OnEndOfflineAnnouncement (IAsyncResult result);
61 protected abstract void OnEndOnlineAnnouncement (IAsyncResult result);
62 protected abstract EndpointDiscoveryMetadata OnEndResolve (IAsyncResult result);
65 #region service contract implementation
67 // IDiscoveryProxyContract11
68 IAsyncResult IDiscoveryProxyContract11.BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state)
70 return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
73 MessageContracts11.FindResponse IDiscoveryProxyContract11.EndFind (IAsyncResult result)
76 throw new NotImplementedException ();
79 IAsyncResult IDiscoveryProxyContract11.BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state)
81 return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
84 MessageContracts11.ResolveResponse IDiscoveryProxyContract11.EndResolve (IAsyncResult result)
86 var ret = OnEndResolve (result);
87 return new MessageContracts11.ResolveResponse () { MessageSequence = new DiscoveryMessageSequence11 (DiscoveryMessageSequenceGenerator.Next ()), Body = new EndpointDiscoveryMetadata11 (ret) };
90 // IDiscoveryProxyContractApril2005
91 IAsyncResult IDiscoveryProxyContractApril2005.BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state)
93 return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
96 MessageContractsApril2005.FindResponse IDiscoveryProxyContractApril2005.EndFind (IAsyncResult result)
99 throw new NotImplementedException ();
102 IAsyncResult IDiscoveryProxyContractApril2005.BeginResolve (MessageContractsApril2005.ResolveRequest message, AsyncCallback callback, object state)
104 return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
107 MessageContractsApril2005.ResolveResponse IDiscoveryProxyContractApril2005.EndResolve (IAsyncResult result)
109 var ret = OnEndResolve (result);
110 return new MessageContractsApril2005.ResolveResponse () { MessageSequence = new DiscoveryMessageSequenceApril2005 (DiscoveryMessageSequenceGenerator.Next ()), Body = new EndpointDiscoveryMetadataApril2005 (ret) };
113 // IDiscoveryProxyContractCD1
114 IAsyncResult IDiscoveryProxyContractCD1.BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state)
116 return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
119 MessageContractsCD1.FindResponse IDiscoveryProxyContractCD1.EndFind (IAsyncResult result)
122 throw new NotImplementedException ();
125 IAsyncResult IDiscoveryProxyContractCD1.BeginResolve (MessageContractsCD1.ResolveRequest message, AsyncCallback callback, object state)
127 return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
130 MessageContractsCD1.ResolveResponse IDiscoveryProxyContractCD1.EndResolve (IAsyncResult result)
132 var ret = OnEndResolve (result);
133 return new MessageContractsCD1.ResolveResponse () { MessageSequence = new DiscoveryMessageSequenceCD1 (DiscoveryMessageSequenceGenerator.Next ()), Body = new EndpointDiscoveryMetadataCD1 (ret) };
136 // IDiscoveryTargetContract11
137 IAsyncResult IDiscoveryTargetContract11.BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state)
139 return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
142 void IDiscoveryTargetContract11.EndFind (IAsyncResult result)
147 IAsyncResult IDiscoveryTargetContract11.BeginReplyFind (MessageContracts11.FindResponse message, AsyncCallback callback, object state)
149 // is it expected to be invoked??
150 throw new NotImplementedException ();
153 void IDiscoveryTargetContract11.EndReplyFind (IAsyncResult result)
155 // is it expected to be invoked??
156 throw new NotImplementedException ();
159 IAsyncResult IDiscoveryTargetContract11.BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state)
161 return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
164 void IDiscoveryTargetContract11.EndResolve (IAsyncResult result)
166 OnEndResolve (result);
169 IAsyncResult IDiscoveryTargetContract11.BeginReplyResolve (MessageContracts11.ResolveResponse message, AsyncCallback callback, object state)
171 // is it expected to be invoked??
172 throw new NotImplementedException ();
175 void IDiscoveryTargetContract11.EndReplyResolve (IAsyncResult result)
177 // is it expected to be invoked??
178 throw new NotImplementedException ();
181 IAsyncResult IDiscoveryTargetContract11.BeginOnlineAnnouncement (MessageContracts11.OnlineAnnouncement msg, AsyncCallback callback, object state)
183 var edm = msg.EndpointDiscoveryMetadata != null ? msg.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata () : null;
184 return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), edm, callback, state);
187 void IDiscoveryTargetContract11.EndOnlineAnnouncement (IAsyncResult result)
189 OnEndOnlineAnnouncement (result);
192 // IDiscoveryTargetContractApril2005
193 IAsyncResult IDiscoveryTargetContractApril2005.BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state)
195 return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
198 void IDiscoveryTargetContractApril2005.EndFind (IAsyncResult result)
203 IAsyncResult IDiscoveryTargetContractApril2005.BeginReplyFind (MessageContractsApril2005.FindResponse message, AsyncCallback callback, object state)
205 // is it expected to be invoked??
206 throw new NotImplementedException ();
209 void IDiscoveryTargetContractApril2005.EndReplyFind (IAsyncResult result)
211 // is it expected to be invoked??
212 throw new NotImplementedException ();
215 IAsyncResult IDiscoveryTargetContractApril2005.BeginResolve (MessageContractsApril2005.ResolveRequest message, AsyncCallback callback, object state)
217 return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
220 void IDiscoveryTargetContractApril2005.EndResolve (IAsyncResult result)
222 OnEndResolve (result);
225 IAsyncResult IDiscoveryTargetContractApril2005.BeginReplyResolve (MessageContractsApril2005.ResolveResponse message, AsyncCallback callback, object state)
227 // is it expected to be invoked??
228 throw new NotImplementedException ();
231 void IDiscoveryTargetContractApril2005.EndReplyResolve (IAsyncResult result)
233 // is it expected to be invoked??
234 throw new NotImplementedException ();
237 IAsyncResult IDiscoveryTargetContractApril2005.BeginOnlineAnnouncement (MessageContractsApril2005.OnlineAnnouncement msg, AsyncCallback callback, object state)
239 var edm = msg.EndpointDiscoveryMetadata != null ? msg.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata () : null;
240 return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), edm, callback, state);
243 void IDiscoveryTargetContractApril2005.EndOnlineAnnouncement (IAsyncResult result)
245 OnEndOnlineAnnouncement (result);
248 // IDiscoveryTargetContractCD1
249 IAsyncResult IDiscoveryTargetContractCD1.BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state)
251 return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
254 void IDiscoveryTargetContractCD1.EndFind (IAsyncResult result)
259 IAsyncResult IDiscoveryTargetContractCD1.BeginReplyFind (MessageContractsCD1.FindResponse message, AsyncCallback callback, object state)
261 // is it expected to be invoked??
262 throw new NotImplementedException ();
265 void IDiscoveryTargetContractCD1.EndReplyFind (IAsyncResult result)
267 // is it expected to be invoked??
268 throw new NotImplementedException ();
271 IAsyncResult IDiscoveryTargetContractCD1.BeginResolve (MessageContractsCD1.ResolveRequest message, AsyncCallback callback, object state)
273 return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
276 void IDiscoveryTargetContractCD1.EndResolve (IAsyncResult result)
278 OnEndResolve (result);
281 IAsyncResult IDiscoveryTargetContractCD1.BeginReplyResolve (MessageContractsCD1.ResolveResponse message, AsyncCallback callback, object state)
283 // is it expected to be invoked??
284 throw new NotImplementedException ();
287 void IDiscoveryTargetContractCD1.EndReplyResolve (IAsyncResult result)
289 // is it expected to be invoked??
290 throw new NotImplementedException ();
293 IAsyncResult IDiscoveryTargetContractCD1.BeginOnlineAnnouncement (MessageContractsCD1.OnlineAnnouncement msg, AsyncCallback callback, object state)
295 var edm = msg.EndpointDiscoveryMetadata != null ? msg.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata () : null;
296 return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), edm, callback, state);
299 void IDiscoveryTargetContractCD1.EndOnlineAnnouncement (IAsyncResult result)
301 OnEndOnlineAnnouncement (result);