1 karl 1.35 //%2006////////////////////////////////////////////////////////////////////////
|
2 mike 1.2 //
|
3 karl 1.28 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
4 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
5 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
|
6 karl 1.26 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.28 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
8 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
|
9 karl 1.30 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 karl 1.35 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
12 // EMC Corporation; Symantec Corporation; The Open Group.
|
13 mike 1.2 //
14 // Permission is hereby granted, free of charge, to any person obtaining a copy
|
15 kumpf 1.22 // of this software and associated documentation files (the "Software"), to
16 // deal in the Software without restriction, including without limitation the
17 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
18 mike 1.2 // sell copies of the Software, and to permit persons to whom the Software is
19 // furnished to do so, subject to the following conditions:
|
20 ms.aruran 1.37.4.1 //
|
21 kumpf 1.22 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
|
22 mike 1.2 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
23 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
24 kumpf 1.22 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
25 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
26 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
27 mike 1.2 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30 //==============================================================================
31 //
32 //%/////////////////////////////////////////////////////////////////////////////
33
34 #ifndef Pegasus_CIMOperationRequestDecoder_h
35 #define Pegasus_CIMOperationRequestDecoder_h
36
37 #include <Pegasus/Common/Config.h>
|
38 mday 1.5 #include <Pegasus/Common/MessageQueueService.h>
|
39 mike 1.2 #include <Pegasus/Common/CIMMessage.h>
40 #include <Pegasus/Common/HTTPMessage.h>
|
41 kumpf 1.34 #include <Pegasus/Common/AcceptLanguageList.h>
42 #include <Pegasus/Common/ContentLanguageList.h>
|
43 a.arora 1.27 #include <Pegasus/Common/AutoPtr.h>
|
44 mike 1.2
45 PEGASUS_NAMESPACE_BEGIN
46
47 class XmlParser;
48
49 /** This class decodes CIM operation requests and passes them down-stream.
|
50 mday 1.7 */
|
51 mday 1.21 class CIMOperationRequestDecoder : public MessageQueueService
|
52 mike 1.2 {
|
53 mday 1.5 public:
|
54 mday 1.21 typedef MessageQueueService Base;
|
55 ms.aruran 1.37.4.1
|
56 mday 1.7 CIMOperationRequestDecoder(
|
57 ms.aruran 1.37.4.1 MessageQueueService* outputQueue,
58 Uint32 returnQueueId);
|
59 mday 1.7
60 ~CIMOperationRequestDecoder();
61
62 void sendResponse(
|
63 ms.aruran 1.37.4.1 Uint32 queueId,
|
64 mike 1.33 Buffer& message,
|
65 j.alex 1.32 Boolean closeConnect = false);
|
66 mday 1.7
|
67 kumpf 1.9 void sendIMethodError(
|
68 ms.aruran 1.37.4.1 Uint32 queueId,
|
69 kumpf 1.24 HttpMethod httpMethod,
|
70 j.alex 1.32 const String& messageId,
71 const String& methodName,
72 const CIMException& cimException,
73 Boolean closeConnect = false);
|
74 kumpf 1.9
75 void sendMethodError(
|
76 ms.aruran 1.37.4.1 Uint32 queueId,
|
77 kumpf 1.24 HttpMethod httpMethod,
|
78 j.alex 1.32 const String& messageId,
79 const String& methodName,
80 const CIMException& cimException,
81 Boolean closeConnect = false);
|
82 mday 1.7
|
83 kumpf 1.15 void sendHttpError(
|
84 ms.aruran 1.37.4.1 Uint32 queueId,
|
85 j.alex 1.32 const String& status,
86 const String& cimError = String::EMPTY,
87 const String& messageBody = String::EMPTY,
88 Boolean closeConnect = false);
|
89 kumpf 1.12
|
90 mday 1.7 virtual void handleEnqueue(Message *);
91
92 virtual void handleEnqueue();
93
94 void handleHTTPMessage(HTTPMessage* httpMessage);
95
|
96 chuck 1.25 // l10n
|
97 mday 1.7 void handleMethodCall(
|
98 j.alex 1.32 Uint32 queueId,
|
99 kumpf 1.24 HttpMethod httpMethod,
|
100 j.alex 1.32 char* content,
|
101 sage 1.18 Uint32 contentLength,
|
102 j.alex 1.32 const String& cimProtocolVersionInHeader,
103 const String& cimMethodInHeader,
104 const String& cimObjectInHeader,
|
105 kumpf 1.37 const String& authType,
106 const String& userName,
107 const String& ipAddress,
|
108 kumpf 1.34 const AcceptLanguageList& httpAcceptLanguages,
109 const ContentLanguageList& httpContentLanguages,
|
110 ms.aruran 1.37.4.1 Boolean closeConnect,
111 Array<SSLCertificateInfo*> userCert);
|
112 mday 1.7
113 CIMCreateClassRequestMessage* decodeCreateClassRequest(
|
114 ms.aruran 1.37.4.1 Uint32 queueId,
115 XmlParser& parser,
116 const String& messageId,
117 const CIMNamespaceName& nameSpace);
|
118 mday 1.7
119 CIMGetClassRequestMessage* decodeGetClassRequest(
|
120 ms.aruran 1.37.4.1 Uint32 queueId,
121 XmlParser& parser,
122 const String& messageId,
123 const CIMNamespaceName& nameSpace);
|
124 mday 1.7
125 CIMModifyClassRequestMessage* decodeModifyClassRequest(
|
126 ms.aruran 1.37.4.1 Uint32 queueId,
127 XmlParser& parser,
128 const String& messageId,
129 const CIMNamespaceName& nameSpace);
|
130 mday 1.7
131 CIMEnumerateClassNamesRequestMessage* decodeEnumerateClassNamesRequest(
|
132 ms.aruran 1.37.4.1 Uint32 queueId,
133 XmlParser& parser,
134 const String& messageId,
135 const CIMNamespaceName& nameSpace);
|
136 mday 1.7
137 CIMEnumerateClassesRequestMessage* decodeEnumerateClassesRequest(
|
138 ms.aruran 1.37.4.1 Uint32 queueId,
139 XmlParser& parser,
140 const String& messageId,
141 const CIMNamespaceName& nameSpace);
|
142 mday 1.7
143 CIMDeleteClassRequestMessage* decodeDeleteClassRequest(
|
144 ms.aruran 1.37.4.1 Uint32 queueId,
145 XmlParser& parser,
146 const String& messageId,
147 const CIMNamespaceName& nameSpace);
|
148 mday 1.7
149 CIMCreateInstanceRequestMessage* decodeCreateInstanceRequest(
|
150 ms.aruran 1.37.4.1 Uint32 queueId,
151 XmlParser& parser,
152 const String& messageId,
153 const CIMNamespaceName& nameSpace);
|
154 mday 1.7
155 CIMGetInstanceRequestMessage* decodeGetInstanceRequest(
|
156 ms.aruran 1.37.4.1 Uint32 queueId,
157 XmlParser& parser,
158 const String& messageId,
159 const CIMNamespaceName& nameSpace);
|
160 mday 1.7
161 CIMModifyInstanceRequestMessage* decodeModifyInstanceRequest(
|
162 ms.aruran 1.37.4.1 Uint32 queueId,
163 XmlParser& parser,
164 const String& messageId,
165 const CIMNamespaceName& nameSpace);
|
166 mday 1.7
167 CIMEnumerateInstanceNamesRequestMessage* decodeEnumerateInstanceNamesRequest(
|
168 ms.aruran 1.37.4.1 Uint32 queueId,
169 XmlParser& parser,
170 const String& messageId,
171 const CIMNamespaceName& nameSpace);
|
172 mday 1.7
173 CIMEnumerateInstancesRequestMessage* decodeEnumerateInstancesRequest(
|
174 ms.aruran 1.37.4.1 Uint32 queueId,
175 XmlParser& parser,
176 const String& messageId,
177 const CIMNamespaceName& nameSpace);
|
178 mday 1.7
179 CIMDeleteInstanceRequestMessage* decodeDeleteInstanceRequest(
|
180 ms.aruran 1.37.4.1 Uint32 queueId,
181 XmlParser& parser,
182 const String& messageId,
183 const CIMNamespaceName& nameSpace);
|
184 mday 1.7
185 CIMSetQualifierRequestMessage* decodeSetQualifierRequest(
|
186 ms.aruran 1.37.4.1 Uint32 queueId,
187 XmlParser& parser,
188 const String& messageId,
189 const CIMNamespaceName& nameSpace);
|
190 mday 1.7
191 CIMGetQualifierRequestMessage* decodeGetQualifierRequest(
|
192 ms.aruran 1.37.4.1 Uint32 queueId,
193 XmlParser& parser,
194 const String& messageId,
195 const CIMNamespaceName& nameSpace);
|
196 mday 1.7
197 CIMEnumerateQualifiersRequestMessage* decodeEnumerateQualifiersRequest(
|
198 ms.aruran 1.37.4.1 Uint32 queueId,
199 XmlParser& parser,
200 const String& messageId,
201 const CIMNamespaceName& nameSpace);
|
202 mday 1.7
203 CIMDeleteQualifierRequestMessage* decodeDeleteQualifierRequest(
|
204 ms.aruran 1.37.4.1 Uint32 queueId,
205 XmlParser& parser,
206 const String& messageId,
207 const CIMNamespaceName& nameSpace);
|
208 mday 1.7
209 CIMReferenceNamesRequestMessage* decodeReferenceNamesRequest(
|
210 ms.aruran 1.37.4.1 Uint32 queueId,
211 XmlParser& parser,
212 const String& messageId,
213 const CIMNamespaceName& nameSpace);
|
214 mday 1.7
215 CIMReferencesRequestMessage* decodeReferencesRequest(
|
216 ms.aruran 1.37.4.1 Uint32 queueId,
217 XmlParser& parser,
218 const String& messageId,
219 const CIMNamespaceName& nameSpace);
|
220 mday 1.7
221 CIMAssociatorNamesRequestMessage* decodeAssociatorNamesRequest(
|
222 ms.aruran 1.37.4.1 Uint32 queueId,
223 XmlParser& parser,
224 const String& messageId,
225 const CIMNamespaceName& nameSpace);
|
226 mday 1.7
227 CIMAssociatorsRequestMessage* decodeAssociatorsRequest(
|
228 ms.aruran 1.37.4.1 Uint32 queueId,
229 XmlParser& parser,
230 const String& messageId,
231 const CIMNamespaceName& nameSpace);
|
232 mday 1.7
233 CIMGetPropertyRequestMessage* decodeGetPropertyRequest(
|
234 ms.aruran 1.37.4.1 Uint32 queueId,
235 XmlParser& parser,
236 const String& messageId,
237 const CIMNamespaceName& nameSpace);
|
238 mday 1.7
239 CIMSetPropertyRequestMessage* decodeSetPropertyRequest(
|
240 ms.aruran 1.37.4.1 Uint32 queueId,
241 XmlParser& parser,
242 const String& messageId,
243 const CIMNamespaceName& nameSpace);
|
244 mday 1.7
|
245 kumpf 1.14 CIMExecQueryRequestMessage* decodeExecQueryRequest(
|
246 ms.aruran 1.37.4.1 Uint32 queueId,
247 XmlParser& parser,
248 const String& messageId,
249 const CIMNamespaceName& nameSpace);
|
250 kumpf 1.14
|
251 mday 1.7 CIMInvokeMethodRequestMessage* decodeInvokeMethodRequest(
|
252 ms.aruran 1.37.4.1 Uint32 queueId,
253 XmlParser& parser,
254 const String& messageId,
255 const CIMObjectPath& reference,
256 const String& cimMethodName);
257
258 /** Sets the flag to indicate whether or not the CIMServer is
259 shutting down.
|
260 mday 1.7 */
261 void setServerTerminating(Boolean flag);
262
263 private:
|
264 mike 1.2
|
265 ms.aruran 1.37.4.1 // Do not make _outputQueue an AutoPtr.
266 MessageQueueService* _outputQueue;
|
267 mike 1.2
|
268 mday 1.7 // Queue where responses should be enqueued.
269 Uint32 _returnQueueId;
|
270 mike 1.2
|
271 mday 1.7 // Flag to indicate whether or not the CIMServer is shutting down.
272 Boolean _serverTerminating;
|
273 j.alex 1.32
|
274 mike 1.2 };
275
276 PEGASUS_NAMESPACE_END
277
278 #endif /* Pegasus_CIMOperationRequestDecoder_h */
|