* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / Microsoft.Web.Services / Microsoft.Web.Services / WebServicesClientProtocol.cs
1 //
2 // WebServicesClientProtocol.cs: Web Services Client Protocol
3 //
4 // Author:
5 //      Sebastien Pouliot (spouliot@motus.com)
6 //
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
8 //
9
10 using System;
11 using System.Net;
12 using System.Web.Services.Protocols;
13
14 namespace Microsoft.Web.Services {
15
16         public class WebServicesClientProtocol : SoapHttpClientProtocol {
17
18                 private Pipeline _pipeline;
19                 private SoapContext _requestContext;
20                 private SoapContext _responseContext;
21
22                 public WebServicesClientProtocol () {}
23
24                 public Pipeline Pipeline { 
25                         get { 
26                                 if (_pipeline == null)
27                                         _pipeline = new Pipeline ();
28                                 return _pipeline; 
29                         }
30                         set {
31                                 if (value == null)
32                                         throw new System.ArgumentNullException ("value");
33                                 _pipeline = value;
34                         }
35                 }
36
37                 public SoapContext RequestSoapContext {
38                         get { 
39                                 if (_requestContext == null)
40                                         _requestContext = new SoapContext (); 
41                                 return _requestContext;
42                         }
43                 }
44
45                 public SoapContext ResponseSoapContext { 
46                         get { 
47                                 if (_responseContext == null)
48                                         _responseContext = new SoapContext (); 
49                                 return _responseContext;
50                         }
51                 }
52
53                 [MonoTODO("something is missing")]
54                 public new string Url { 
55                         get { return base.Url; }
56                         set { base.Url = value; }
57                 }
58
59                 protected override WebRequest GetWebRequest (Uri uri) 
60                 {
61                         SoapWebRequest request = new SoapWebRequest (uri);
62                         RequestSoapContext.CopyTo (request.SoapContext);
63                         request.Pipeline = Pipeline;
64                         return request;
65                 }
66
67                 protected override WebResponse GetWebResponse (WebRequest request) 
68                 {
69                         WebResponse response = request.GetResponse ();
70                         //response.SoapContext.CopyTo (ResponseSoapContext);
71                         return response;
72                 }
73
74                 [MonoTODO("do not support IAsyncResult")]
75                 protected override WebResponse GetWebResponse (WebRequest request, IAsyncResult result) 
76                 {
77                         SoapWebResponse response = (SoapWebResponse) request.GetResponse ();
78                         response.SoapContext.CopyTo (ResponseSoapContext);
79                         return response;
80                 }
81         }
82 }