1 martin 1.23 //%LICENSE////////////////////////////////////////////////////////////////
|
2 martin 1.24 //
|
3 martin 1.23 // Licensed to The Open Group (TOG) under one or more contributor license
4 // agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 // this work for additional information regarding copyright ownership.
6 // Each contributor licenses this file to you under the OpenPegasus Open
7 // Source License; you may not use this file except in compliance with the
8 // License.
|
9 martin 1.24 //
|
10 martin 1.23 // Permission is hereby granted, free of charge, to any person obtaining a
11 // copy of this software and associated documentation files (the "Software"),
12 // to deal in the Software without restriction, including without limitation
13 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 // and/or sell copies of the Software, and to permit persons to whom the
15 // Software is furnished to do so, subject to the following conditions:
|
16 martin 1.24 //
|
17 martin 1.23 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
|
19 martin 1.24 //
|
20 martin 1.23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
21 martin 1.24 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
22 martin 1.23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
27 martin 1.24 //
|
28 martin 1.23 //////////////////////////////////////////////////////////////////////////
|
29 mike 1.2 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
32 #ifndef Pegasus_CIMOperationResponseDecoder_h
33 #define Pegasus_CIMOperationResponseDecoder_h
34
35 #include <fstream>
36 #include <Pegasus/Common/Config.h>
37 #include <Pegasus/Common/MessageQueue.h>
38 #include <Pegasus/Common/HTTPMessage.h>
39 #include <Pegasus/Common/CIMMessage.h>
|
40 kumpf 1.17 #include <Pegasus/Common/ContentLanguageList.h>
|
41 mike 1.2 #include <Pegasus/Client/ClientAuthenticator.h>
|
42 kumpf 1.5 #include <Pegasus/Client/CIMClientException.h>
|
43 mike 1.2 #include <Pegasus/Client/Linkage.h>
|
44 w.white 1.14 #include "ClientPerfDataStore.h"
45
|
46 mike 1.2
47 PEGASUS_NAMESPACE_BEGIN
48
49 class XmlParser;
|
50 kumpf 1.5
51 /**
52 This message is sent from the response decoder to the CIMClient, indicating
53 an error in issuing a CIM request.
54 */
|
55 mike 1.20 class PEGASUS_CLIENT_LINKAGE ClientExceptionMessage : public Message
|
56 kumpf 1.5 {
57 public:
|
58 kumpf 1.8 ClientExceptionMessage(Exception* clientException_)
|
59 kumpf 1.5 :
60 Message(CLIENT_EXCEPTION_MESSAGE),
61 clientException(clientException_)
62 {
63 }
64
|
65 kumpf 1.8 Exception* clientException;
|
66 kumpf 1.5 };
67
|
68 mike 1.2
|
69 kumpf 1.21 /** This class receives HTTP messages and decodes them into CIM Operation
|
70 mike 1.2 Responses messages which it places on its output queue.
71 */
72 class PEGASUS_CLIENT_LINKAGE CIMOperationResponseDecoder : public MessageQueue
73 {
74 public:
75
76 /** Constuctor.
|
77 kumpf 1.21 @param outputQueue queue to receive decoded HTTP messages.
|
78 mike 1.2 */
|
79 kumpf 1.21 CIMOperationResponseDecoder(
|
80 mike 1.2 MessageQueue* outputQueue,
81 MessageQueue* encoderQueue,
|
82 karl 1.10 ClientAuthenticator* authenticator,
83 Uint32 showInput);
|
84 mike 1.2
85 /** Destructor. */
86 ~CIMOperationResponseDecoder();
87
88 /** Initializes the encoder queue */
89 void setEncoderQueue(MessageQueue* encoderQueue);
90
91 /** This method is called when a message is enqueued on this queue. */
92 virtual void handleEnqueue();
93
|
94 a.dunfey 1.18 /**
|
95 kumpf 1.21 This methods gives the Decoder access to the ClientPerfDataStore that
96 is in CIMClientRep. A pointer to the CIMClientRep::ClientPerfDataStore
97 is passed in
98 */
|
99 a.dunfey 1.18 void setDataStorePointer(ClientPerfDataStore* perfDataStore_ptr);
100
|
101 mike 1.2 private:
102
|
103 kumpf 1.21 void _handleHTTPMessage(HTTPMessage* message);
|
104 mike 1.2
105 void _handleMethodResponse(
|
106 kumpf 1.25 const char* content,
|
107 mike 1.22 Uint32 contentLength,
|
108 kumpf 1.17 const ContentLanguageList& contentLanguages,
|
109 mike 1.22 Boolean reconnect,
110 bool binaryResponse);
|
111 mike 1.2
112 CIMCreateClassResponseMessage* _decodeCreateClassResponse(
|
113 kumpf 1.12 XmlParser& parser,
114 const String& messageId,
115 Boolean isEmptyImethodresponseTag);
|
116 mike 1.2
117 CIMGetClassResponseMessage* _decodeGetClassResponse(
|
118 kumpf 1.12 XmlParser& parser,
119 const String& messageId,
120 Boolean isEmptyImethodresponseTag);
|
121 mike 1.2
122 CIMModifyClassResponseMessage* _decodeModifyClassResponse(
|
123 kumpf 1.12 XmlParser& parser,
124 const String& messageId,
125 Boolean isEmptyImethodresponseTag);
|
126 mike 1.2
127 CIMEnumerateClassNamesResponseMessage* _decodeEnumerateClassNamesResponse(
|
128 kumpf 1.12 XmlParser& parser,
129 const String& messageId,
130 Boolean isEmptyImethodresponseTag);
|
131 mike 1.2
132 CIMEnumerateClassesResponseMessage* _decodeEnumerateClassesResponse(
|
133 kumpf 1.12 XmlParser& parser,
134 const String& messageId,
135 Boolean isEmptyImethodresponseTag);
|
136 mike 1.2
137 CIMDeleteClassResponseMessage* _decodeDeleteClassResponse(
|
138 kumpf 1.12 XmlParser& parser,
139 const String& messageId,
140 Boolean isEmptyImethodresponseTag);
|
141 mike 1.2
142 CIMCreateInstanceResponseMessage* _decodeCreateInstanceResponse(
|
143 kumpf 1.12 XmlParser& parser,
144 const String& messageId,
145 Boolean isEmptyImethodresponseTag);
|
146 mike 1.2
147 CIMGetInstanceResponseMessage* _decodeGetInstanceResponse(
|
148 kumpf 1.12 XmlParser& parser,
149 const String& messageId,
150 Boolean isEmptyImethodresponseTag);
|
151 mike 1.2
152 CIMModifyInstanceResponseMessage* _decodeModifyInstanceResponse(
|
153 kumpf 1.12 XmlParser& parser,
154 const String& messageId,
155 Boolean isEmptyImethodresponseTag);
|
156 mike 1.2
|
157 kumpf 1.21 CIMEnumerateInstanceNamesResponseMessage*
158 _decodeEnumerateInstanceNamesResponse(
159 XmlParser& parser,
160 const String& messageId,
161 Boolean isEmptyImethodresponseTag);
|
162 mike 1.2
163 CIMEnumerateInstancesResponseMessage* _decodeEnumerateInstancesResponse(
|
164 kumpf 1.12 XmlParser& parser,
165 const String& messageId,
166 Boolean isEmptyImethodresponseTag);
|
167 mike 1.2
168 CIMDeleteInstanceResponseMessage* _decodeDeleteInstanceResponse(
|
169 kumpf 1.12 XmlParser& parser,
170 const String& messageId,
171 Boolean isEmptyImethodresponseTag);
|
172 mike 1.2
173 CIMGetPropertyResponseMessage* _decodeGetPropertyResponse(
|
174 kumpf 1.12 XmlParser& parser,
175 const String& messageId,
176 Boolean isEmptyImethodresponseTag);
|
177 mike 1.2
178 CIMSetPropertyResponseMessage* _decodeSetPropertyResponse(
|
179 kumpf 1.12 XmlParser& parser,
180 const String& messageId,
181 Boolean isEmptyImethodresponseTag);
|
182 mike 1.2
183 CIMSetQualifierResponseMessage* _decodeSetQualifierResponse(
|
184 kumpf 1.12 XmlParser& parser,
185 const String& messageId,
186 Boolean isEmptyImethodresponseTag);
|
187 mike 1.2
188 CIMGetQualifierResponseMessage* _decodeGetQualifierResponse(
|
189 kumpf 1.12 XmlParser& parser,
190 const String& messageId,
191 Boolean isEmptyImethodresponseTag);
|
192 mike 1.2
193 CIMEnumerateQualifiersResponseMessage* _decodeEnumerateQualifiersResponse(
|
194 kumpf 1.12 XmlParser& parser,
195 const String& messageId,
196 Boolean isEmptyImethodresponseTag);
|
197 mike 1.2
198 CIMDeleteQualifierResponseMessage* _decodeDeleteQualifierResponse(
|
199 kumpf 1.12 XmlParser& parser,
200 const String& messageId,
201 Boolean isEmptyImethodresponseTag);
|
202 mike 1.2
203 CIMReferenceNamesResponseMessage* _decodeReferenceNamesResponse(
|
204 kumpf 1.12 XmlParser& parser,
205 const String& messageId,
206 Boolean isEmptyImethodresponseTag);
|
207 mike 1.2
208 CIMReferencesResponseMessage* _decodeReferencesResponse(
|
209 kumpf 1.12 XmlParser& parser,
210 const String& messageId,
211 Boolean isEmptyImethodresponseTag);
|
212 mike 1.2
213 CIMAssociatorNamesResponseMessage* _decodeAssociatorNamesResponse(
|
214 kumpf 1.12 XmlParser& parser,
215 const String& messageId,
216 Boolean isEmptyImethodresponseTag);
|
217 mike 1.2
218 CIMAssociatorsResponseMessage* _decodeAssociatorsResponse(
|
219 kumpf 1.12 XmlParser& parser,
220 const String& messageId,
221 Boolean isEmptyImethodresponseTag);
|
222 mike 1.2
|
223 kumpf 1.3 CIMExecQueryResponseMessage* _decodeExecQueryResponse(
|
224 kumpf 1.12 XmlParser& parser,
225 const String& messageId,
226 Boolean isEmptyImethodresponseTag);
|
227 kumpf 1.3
|
228 mike 1.2 CIMInvokeMethodResponseMessage* _decodeInvokeMethodResponse(
|
229 kumpf 1.12 XmlParser& parser,
230 const String& messageId,
231 const String& methodName,
232 Boolean isEmptyMethodresponseTag);
|
233 mike 1.2
234 MessageQueue* _outputQueue;
235
236 MessageQueue* _encoderQueue;
237
238 ClientAuthenticator* _authenticator;
|
239 karl 1.10
240 // Controls decoder client displays 1 = con, 2 = log display
241 Uint32 _showInput;
|
242 a.dunfey 1.18
243 ClientPerfDataStore* dataStore;
|
244 mike 1.2 };
245
246 PEGASUS_NAMESPACE_END
247
248 #endif /* Pegasus_CIMOperationResponseDecoder_h */
|