Merge branch 'master' of github.com:mono/mono
[mono.git] / mcs / class / System.ServiceModel.Discovery / System.ServiceModel.Discovery / DiscoveryProxy.cs
1 using System;
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;
11
12 namespace System.ServiceModel.Discovery
13 {
14         [MonoTODO]
15         public abstract class DiscoveryProxy : IDiscoveryProxyContract11, IDiscoveryProxyContractApril2005, IDiscoveryProxyContractCD1, IDiscoveryTargetContract11, IDiscoveryTargetContractApril2005, IDiscoveryTargetContractCD1
16         {
17                 protected DiscoveryProxy ()
18                         : this (new DiscoveryMessageSequenceGenerator ())
19                 {
20                 }
21
22                 protected DiscoveryProxy (DiscoveryMessageSequenceGenerator messageSequenceGenerator)
23                         : this (messageSequenceGenerator, 0)
24                 {
25                 }
26
27                 protected DiscoveryProxy (DiscoveryMessageSequenceGenerator messageSequenceGenerator, int duplicateMessageHistoryLength)
28                 {
29                 }
30
31                 internal DiscoveryMessageSequenceGenerator DiscoveryMessageSequenceGenerator { get; private set; }
32
33                 internal int DuplicateMessageHistoryLength { get; private set; }
34
35                 protected virtual IAsyncResult BeginShouldRedirectFind (FindCriteria resolveCriteria, AsyncCallback callback, Object state)
36                 {
37                         throw new NotImplementedException ();
38                 }
39
40                 protected virtual IAsyncResult BeginShouldRedirectResolve (ResolveCriteria findCriteria, AsyncCallback callback, Object state)
41                 {
42                         throw new NotImplementedException ();
43                 }
44
45                 protected virtual bool EndShouldRedirectFind (IAsyncResult result, out Collection<EndpointDiscoveryMetadata> redirectionEndpoints)
46                 {
47                         throw new NotImplementedException ();
48                 }
49
50                 protected virtual bool EndShouldRedirectResolve (IAsyncResult result, out Collection<EndpointDiscoveryMetadata> redirectionEndpoints)
51                 {
52                         throw new NotImplementedException ();
53                 }
54
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);
63
64
65                 #region service contract implementation
66                 
67                 // IDiscoveryProxyContract11
68                 IAsyncResult IDiscoveryProxyContract11.BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state)
69                 {
70                         return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
71                 }
72
73                 MessageContracts11.FindResponse IDiscoveryProxyContract11.EndFind (IAsyncResult result)
74                 {
75                         OnEndFind (result);
76                         throw new NotImplementedException ();
77                 }
78
79                 IAsyncResult IDiscoveryProxyContract11.BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state)
80                 {
81                         return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
82                 }
83
84                 MessageContracts11.ResolveResponse IDiscoveryProxyContract11.EndResolve (IAsyncResult result)
85                 {
86                         var ret = OnEndResolve (result);
87                         return new MessageContracts11.ResolveResponse () { MessageSequence = new DiscoveryMessageSequence11 (DiscoveryMessageSequenceGenerator.Next ()), Body = new EndpointDiscoveryMetadata11 (ret) };
88                 }
89                 
90                 // IDiscoveryProxyContractApril2005
91                 IAsyncResult IDiscoveryProxyContractApril2005.BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state)
92                 {
93                         return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
94                 }
95
96                 MessageContractsApril2005.FindResponse IDiscoveryProxyContractApril2005.EndFind (IAsyncResult result)
97                 {
98                         OnEndFind (result);
99                         throw new NotImplementedException ();
100                 }
101
102                 IAsyncResult IDiscoveryProxyContractApril2005.BeginResolve (MessageContractsApril2005.ResolveRequest message, AsyncCallback callback, object state)
103                 {
104                         return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
105                 }
106
107                 MessageContractsApril2005.ResolveResponse IDiscoveryProxyContractApril2005.EndResolve (IAsyncResult result)
108                 {
109                         var ret = OnEndResolve (result);
110                         return new MessageContractsApril2005.ResolveResponse () { MessageSequence = new DiscoveryMessageSequenceApril2005 (DiscoveryMessageSequenceGenerator.Next ()), Body = new EndpointDiscoveryMetadataApril2005 (ret) };
111                 }
112                 
113                 // IDiscoveryProxyContractCD1
114                 IAsyncResult IDiscoveryProxyContractCD1.BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state)
115                 {
116                         return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
117                 }
118
119                 MessageContractsCD1.FindResponse IDiscoveryProxyContractCD1.EndFind (IAsyncResult result)
120                 {
121                         OnEndFind (result);
122                         throw new NotImplementedException ();
123                 }
124
125                 IAsyncResult IDiscoveryProxyContractCD1.BeginResolve (MessageContractsCD1.ResolveRequest message, AsyncCallback callback, object state)
126                 {
127                         return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
128                 }
129
130                 MessageContractsCD1.ResolveResponse IDiscoveryProxyContractCD1.EndResolve (IAsyncResult result)
131                 {
132                         var ret = OnEndResolve (result);
133                         return new MessageContractsCD1.ResolveResponse () { MessageSequence = new DiscoveryMessageSequenceCD1 (DiscoveryMessageSequenceGenerator.Next ()), Body = new EndpointDiscoveryMetadataCD1 (ret) };
134                 }
135
136                 // IDiscoveryTargetContract11
137                 IAsyncResult IDiscoveryTargetContract11.BeginFind (MessageContracts11.FindRequest message, AsyncCallback callback, object state)
138                 {
139                         return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
140                 }
141
142                 void IDiscoveryTargetContract11.EndFind (IAsyncResult result)
143                 {
144                         OnEndFind (result);
145                 }
146
147                 IAsyncResult IDiscoveryTargetContract11.BeginReplyFind (MessageContracts11.FindResponse message, AsyncCallback callback, object state)
148                 {
149                         // is it expected to be invoked??
150                         throw new NotImplementedException ();
151                 }
152
153                 void IDiscoveryTargetContract11.EndReplyFind (IAsyncResult result)
154                 {
155                         // is it expected to be invoked??
156                         throw new NotImplementedException ();
157                 }
158
159                 IAsyncResult IDiscoveryTargetContract11.BeginResolve (MessageContracts11.ResolveRequest message, AsyncCallback callback, object state)
160                 {
161                         return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
162                 }
163
164                 void IDiscoveryTargetContract11.EndResolve (IAsyncResult result)
165                 {
166                         OnEndResolve (result);
167                 }
168
169                 IAsyncResult IDiscoveryTargetContract11.BeginReplyResolve (MessageContracts11.ResolveResponse message, AsyncCallback callback, object state)
170                 {
171                         // is it expected to be invoked??
172                         throw new NotImplementedException ();
173                 }
174
175                 void IDiscoveryTargetContract11.EndReplyResolve (IAsyncResult result)
176                 {
177                         // is it expected to be invoked??
178                         throw new NotImplementedException ();
179                 }
180
181                 IAsyncResult IDiscoveryTargetContract11.BeginOnlineAnnouncement (MessageContracts11.OnlineAnnouncement msg, AsyncCallback callback, object state)
182                 {
183                         var edm = msg.EndpointDiscoveryMetadata != null ? msg.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata () : null;
184                         return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), edm, callback, state);
185                 }
186
187                 void IDiscoveryTargetContract11.EndOnlineAnnouncement (IAsyncResult result)
188                 {
189                         OnEndOnlineAnnouncement (result);
190                 }
191
192                 // IDiscoveryTargetContractApril2005
193                 IAsyncResult IDiscoveryTargetContractApril2005.BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state)
194                 {
195                         return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
196                 }
197
198                 void IDiscoveryTargetContractApril2005.EndFind (IAsyncResult result)
199                 {
200                         OnEndFind (result);
201                 }
202
203                 IAsyncResult IDiscoveryTargetContractApril2005.BeginReplyFind (MessageContractsApril2005.FindResponse message, AsyncCallback callback, object state)
204                 {
205                         // is it expected to be invoked??
206                         throw new NotImplementedException ();
207                 }
208
209                 void IDiscoveryTargetContractApril2005.EndReplyFind (IAsyncResult result)
210                 {
211                         // is it expected to be invoked??
212                         throw new NotImplementedException ();
213                 }
214
215                 IAsyncResult IDiscoveryTargetContractApril2005.BeginResolve (MessageContractsApril2005.ResolveRequest message, AsyncCallback callback, object state)
216                 {
217                         return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
218                 }
219
220                 void IDiscoveryTargetContractApril2005.EndResolve (IAsyncResult result)
221                 {
222                         OnEndResolve (result);
223                 }
224
225                 IAsyncResult IDiscoveryTargetContractApril2005.BeginReplyResolve (MessageContractsApril2005.ResolveResponse message, AsyncCallback callback, object state)
226                 {
227                         // is it expected to be invoked??
228                         throw new NotImplementedException ();
229                 }
230
231                 void IDiscoveryTargetContractApril2005.EndReplyResolve (IAsyncResult result)
232                 {
233                         // is it expected to be invoked??
234                         throw new NotImplementedException ();
235                 }
236
237                 IAsyncResult IDiscoveryTargetContractApril2005.BeginOnlineAnnouncement (MessageContractsApril2005.OnlineAnnouncement msg, AsyncCallback callback, object state)
238                 {
239                         var edm = msg.EndpointDiscoveryMetadata != null ? msg.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata () : null;
240                         return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), edm, callback, state);
241                 }
242
243                 void IDiscoveryTargetContractApril2005.EndOnlineAnnouncement (IAsyncResult result)
244                 {
245                         OnEndOnlineAnnouncement (result);
246                 }
247
248                 // IDiscoveryTargetContractCD1
249                 IAsyncResult IDiscoveryTargetContractCD1.BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state)
250                 {
251                         return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
252                 }
253
254                 void IDiscoveryTargetContractCD1.EndFind (IAsyncResult result)
255                 {
256                         OnEndFind (result);
257                 }
258
259                 IAsyncResult IDiscoveryTargetContractCD1.BeginReplyFind (MessageContractsCD1.FindResponse message, AsyncCallback callback, object state)
260                 {
261                         // is it expected to be invoked??
262                         throw new NotImplementedException ();
263                 }
264
265                 void IDiscoveryTargetContractCD1.EndReplyFind (IAsyncResult result)
266                 {
267                         // is it expected to be invoked??
268                         throw new NotImplementedException ();
269                 }
270
271                 IAsyncResult IDiscoveryTargetContractCD1.BeginResolve (MessageContractsCD1.ResolveRequest message, AsyncCallback callback, object state)
272                 {
273                         return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
274                 }
275
276                 void IDiscoveryTargetContractCD1.EndResolve (IAsyncResult result)
277                 {
278                         OnEndResolve (result);
279                 }
280
281                 IAsyncResult IDiscoveryTargetContractCD1.BeginReplyResolve (MessageContractsCD1.ResolveResponse message, AsyncCallback callback, object state)
282                 {
283                         // is it expected to be invoked??
284                         throw new NotImplementedException ();
285                 }
286
287                 void IDiscoveryTargetContractCD1.EndReplyResolve (IAsyncResult result)
288                 {
289                         // is it expected to be invoked??
290                         throw new NotImplementedException ();
291                 }
292
293                 IAsyncResult IDiscoveryTargetContractCD1.BeginOnlineAnnouncement (MessageContractsCD1.OnlineAnnouncement msg, AsyncCallback callback, object state)
294                 {
295                         var edm = msg.EndpointDiscoveryMetadata != null ? msg.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata () : null;
296                         return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), edm, callback, state);
297                 }
298
299                 void IDiscoveryTargetContractCD1.EndOnlineAnnouncement (IAsyncResult result)
300                 {
301                         OnEndOnlineAnnouncement (result);
302                 }
303
304                 #endregion
305         }
306 }