ongoing DiscoveryClient work. May need further contract fixes.
[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 message, AsyncCallback callback, object state)
182                 {
183                         return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), message.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata (), callback, state);
184                 }
185
186                 void IDiscoveryTargetContract11.EndOnlineAnnouncement (IAsyncResult result)
187                 {
188                         OnEndOnlineAnnouncement (result);
189                 }
190
191                 // IDiscoveryTargetContractApril2005
192                 IAsyncResult IDiscoveryTargetContractApril2005.BeginFind (MessageContractsApril2005.FindRequest message, AsyncCallback callback, object state)
193                 {
194                         return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
195                 }
196
197                 void IDiscoveryTargetContractApril2005.EndFind (IAsyncResult result)
198                 {
199                         OnEndFind (result);
200                 }
201
202                 IAsyncResult IDiscoveryTargetContractApril2005.BeginReplyFind (MessageContractsApril2005.FindResponse message, AsyncCallback callback, object state)
203                 {
204                         // is it expected to be invoked??
205                         throw new NotImplementedException ();
206                 }
207
208                 void IDiscoveryTargetContractApril2005.EndReplyFind (IAsyncResult result)
209                 {
210                         // is it expected to be invoked??
211                         throw new NotImplementedException ();
212                 }
213
214                 IAsyncResult IDiscoveryTargetContractApril2005.BeginResolve (MessageContractsApril2005.ResolveRequest message, AsyncCallback callback, object state)
215                 {
216                         return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
217                 }
218
219                 void IDiscoveryTargetContractApril2005.EndResolve (IAsyncResult result)
220                 {
221                         OnEndResolve (result);
222                 }
223
224                 IAsyncResult IDiscoveryTargetContractApril2005.BeginReplyResolve (MessageContractsApril2005.ResolveResponse message, AsyncCallback callback, object state)
225                 {
226                         // is it expected to be invoked??
227                         throw new NotImplementedException ();
228                 }
229
230                 void IDiscoveryTargetContractApril2005.EndReplyResolve (IAsyncResult result)
231                 {
232                         // is it expected to be invoked??
233                         throw new NotImplementedException ();
234                 }
235
236                 IAsyncResult IDiscoveryTargetContractApril2005.BeginOnlineAnnouncement (MessageContractsApril2005.OnlineAnnouncement message, AsyncCallback callback, object state)
237                 {
238                         return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), message.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata (), callback, state);
239                 }
240
241                 void IDiscoveryTargetContractApril2005.EndOnlineAnnouncement (IAsyncResult result)
242                 {
243                         OnEndOnlineAnnouncement (result);
244                 }
245
246                 // IDiscoveryTargetContractCD1
247                 IAsyncResult IDiscoveryTargetContractCD1.BeginFind (MessageContractsCD1.FindRequest message, AsyncCallback callback, object state)
248                 {
249                         return OnBeginFind (new DefaultFindRequestContext (message.Body.ToFindCriteria ()), callback, state);
250                 }
251
252                 void IDiscoveryTargetContractCD1.EndFind (IAsyncResult result)
253                 {
254                         OnEndFind (result);
255                 }
256
257                 IAsyncResult IDiscoveryTargetContractCD1.BeginReplyFind (MessageContractsCD1.FindResponse message, AsyncCallback callback, object state)
258                 {
259                         // is it expected to be invoked??
260                         throw new NotImplementedException ();
261                 }
262
263                 void IDiscoveryTargetContractCD1.EndReplyFind (IAsyncResult result)
264                 {
265                         // is it expected to be invoked??
266                         throw new NotImplementedException ();
267                 }
268
269                 IAsyncResult IDiscoveryTargetContractCD1.BeginResolve (MessageContractsCD1.ResolveRequest message, AsyncCallback callback, object state)
270                 {
271                         return OnBeginResolve (message.Body.ToResolveCriteria (), callback, state);
272                 }
273
274                 void IDiscoveryTargetContractCD1.EndResolve (IAsyncResult result)
275                 {
276                         OnEndResolve (result);
277                 }
278
279                 IAsyncResult IDiscoveryTargetContractCD1.BeginReplyResolve (MessageContractsCD1.ResolveResponse message, AsyncCallback callback, object state)
280                 {
281                         // is it expected to be invoked??
282                         throw new NotImplementedException ();
283                 }
284
285                 void IDiscoveryTargetContractCD1.EndReplyResolve (IAsyncResult result)
286                 {
287                         // is it expected to be invoked??
288                         throw new NotImplementedException ();
289                 }
290
291                 IAsyncResult IDiscoveryTargetContractCD1.BeginOnlineAnnouncement (MessageContractsCD1.OnlineAnnouncement message, AsyncCallback callback, object state)
292                 {
293                         return OnBeginOnlineAnnouncement (DiscoveryMessageSequenceGenerator.Next (), message.EndpointDiscoveryMetadata.ToEndpointDiscoveryMetadata (), callback, state);
294                 }
295
296                 void IDiscoveryTargetContractCD1.EndOnlineAnnouncement (IAsyncResult result)
297                 {
298                         OnEndOnlineAnnouncement (result);
299                 }
300
301                 #endregion
302         }
303 }