bfc3e97332893b5f76d77ada48b922ad3a1d666c
[mono.git] / mcs / class / System.Web.Services / System.Web.Services.Protocols / SoapClientMessage.cs
1 // \r
2 // System.Web.Services.Protocols.SoapClientMessage.cs\r
3 //\r
4 // Authors:\r
5 //   Tim Coleman (tim@timcoleman.com)\r
6 //   Miguel de Icaza (miguel@ximian.com)\r
7 //\r
8 // Copyright (C) Tim Coleman, 2002\r
9 // Copyright (C) Ximian, Inc. 2003\r
10 //\r
11 \r
12 using System.Web.Services;\r
13 using System.Web.Services.Protocols;\r
14 \r
15 namespace System.Web.Services.Protocols {\r
16         public sealed class SoapClientMessage : SoapMessage {\r
17 \r
18                 #region Fields\r
19 \r
20                 SoapHttpClientProtocol client;\r
21                 string url;\r
22                 LogicalMethodInfo client_method;\r
23                 internal MethodStubInfo MethodStubInfo;\r
24 \r
25                 //\r
26                 // Expose this one internally\r
27                 //\r
28                 internal object [] Parameters;\r
29                 #endregion\r
30 \r
31                 #region Constructors\r
32 \r
33                 //\r
34                 // Constructs the SoapClientMessage\r
35                 //\r
36                 internal SoapClientMessage (SoapHttpClientProtocol client, MethodStubInfo msi, string url, object [] parameters)\r
37                 {\r
38                         this.MethodStubInfo = msi;\r
39                         this.client = client;\r
40                         this.client_method = client_method;\r
41                         this.url = url;\r
42                         Parameters = parameters;\r
43 \r
44                         foreach (HeaderInfo hi in msi.Headers) {\r
45                                 SoapHeader headerVal = hi.GetHeaderValue (client) as SoapHeader;\r
46                                 if (headerVal != null)\r
47                                         Headers.Add (headerVal);\r
48                         }\r
49                 }\r
50 \r
51                 #endregion \r
52 \r
53                 #region Properties\r
54 \r
55                 public override string Action {\r
56                         get { return MethodStubInfo.Action; }\r
57                 }\r
58 \r
59                 public SoapHttpClientProtocol Client {\r
60                         get { return client; }\r
61                 }\r
62 \r
63                 public override LogicalMethodInfo MethodInfo {\r
64                         get { return client_method; }\r
65                 }\r
66 \r
67                 public override bool OneWay {\r
68                         get { return MethodStubInfo.OneWay; }\r
69                 }\r
70 \r
71                 public override string Url {\r
72                         get { return url; }\r
73                 }\r
74 \r
75                 #endregion // Properties\r
76 \r
77                 #region Methods\r
78 \r
79                 [MonoTODO]\r
80                 protected override void EnsureInStage ()\r
81                 {\r
82                         //\r
83                         // I believe for SoapClientMessage, we can safely remove this check\r
84                         // as the In parameters are always available\r
85                         //\r
86                         throw new NotImplementedException ();\r
87                 }\r
88 \r
89                 protected override void EnsureOutStage ()\r
90                 {\r
91                         EnsureStage (SoapMessageStage.AfterDeserialize);\r
92                 }\r
93 \r
94                 #endregion // Methods\r
95         }\r
96 }\r