1 karl 1.19 //%2006////////////////////////////////////////////////////////////////////////
|
2 mike 1.2 //
|
3 karl 1.13 // 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.11 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.13 // 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.15 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 karl 1.19 // 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 // 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 // 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 kumpf 1.7 //
|
21 mike 1.2 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
22 // 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 // 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 // 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_CIMOperationResponseDecoder_h
35 #define Pegasus_CIMOperationResponseDecoder_h
36
37 #include <fstream>
38 #include <Pegasus/Common/Config.h>
39 #include <Pegasus/Common/MessageQueue.h>
40 #include <Pegasus/Common/HTTPMessage.h>
41 #include <Pegasus/Common/CIMMessage.h>
|
42 kumpf 1.17 #include <Pegasus/Common/ContentLanguageList.h>
|
43 mike 1.2 #include <Pegasus/Client/ClientAuthenticator.h>
|
44 kumpf 1.5 #include <Pegasus/Client/CIMClientException.h>
|
45 mike 1.2 #include <Pegasus/Client/Linkage.h>
|
46 w.white 1.14 #include "ClientPerfDataStore.h"
47
|
48 mike 1.2
49 PEGASUS_NAMESPACE_BEGIN
50
51 class XmlParser;
|
52 kumpf 1.5
53 /**
54 This message is sent from the response decoder to the CIMClient, indicating
55 an error in issuing a CIM request.
56 */
|
57 mike 1.20 class PEGASUS_CLIENT_LINKAGE ClientExceptionMessage : public Message
|
58 kumpf 1.5 {
59 public:
|
60 kumpf 1.8 ClientExceptionMessage(Exception* clientException_)
|
61 kumpf 1.5 :
62 Message(CLIENT_EXCEPTION_MESSAGE),
63 clientException(clientException_)
64 {
65 }
66
|
67 kumpf 1.8 Exception* clientException;
|
68 kumpf 1.5 };
69
|
70 mike 1.2
|
71 kumpf 1.21 /** This class receives HTTP messages and decodes them into CIM Operation
|
72 mike 1.2 Responses messages which it places on its output queue.
73 */
74 class PEGASUS_CLIENT_LINKAGE CIMOperationResponseDecoder : public MessageQueue
75 {
76 public:
77
78 /** Constuctor.
|
79 kumpf 1.21 @param outputQueue queue to receive decoded HTTP messages.
|
80 mike 1.2 */
|
81 kumpf 1.21 CIMOperationResponseDecoder(
|
82 mike 1.2 MessageQueue* outputQueue,
83 MessageQueue* encoderQueue,
|
84 karl 1.10 ClientAuthenticator* authenticator,
85 Uint32 showInput);
|
86 mike 1.2
87 /** Destructor. */
88 ~CIMOperationResponseDecoder();
89
90 /** Initializes the encoder queue */
91 void setEncoderQueue(MessageQueue* encoderQueue);
92
93 /** This method is called when a message is enqueued on this queue. */
94 virtual void handleEnqueue();
95
|
96 a.dunfey 1.18 /**
|
97 kumpf 1.21 This methods gives the Decoder access to the ClientPerfDataStore that
98 is in CIMClientRep. A pointer to the CIMClientRep::ClientPerfDataStore
99 is passed in
100 */
|
101 a.dunfey 1.18 void setDataStorePointer(ClientPerfDataStore* perfDataStore_ptr);
102
|
103 mike 1.2 private:
104
|
105 kumpf 1.21 void _handleHTTPMessage(HTTPMessage* message);
|
106 mike 1.2
107 void _handleMethodResponse(
|
108 j.alex 1.16 char* content,
|
109 kumpf 1.17 const ContentLanguageList& contentLanguages,
|
110 j.alex 1.16 Boolean reconnect);
|
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 */
|