1 //%2003////////////////////////////////////////////////////////////////////////
3 // 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 // IBM Corp.; EMC Corporation, The Open Group.
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to
10 // deal in the Software without restriction, including without limitation the
11 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12 // sell copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
15 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
16 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
17 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
18 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
19 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
21 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 //==============================================================================
26 // Author: Mike Brasher (mbrasher@bmc.com)
28 // Modified By: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
30 // Nag Boranna, Hewlett-Packard Company (nagaraja_boranna@hp.com)
32 //%/////////////////////////////////////////////////////////////////////////////
34 #ifndef Pegasus_CIMOperationResponseDecoder_h
35 #define Pegasus_CIMOperationResponseDecoder_h
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 #include <Pegasus/Common/ContentLanguages.h> // l10n
43 #include <Pegasus/Client/ClientAuthenticator.h>
44 #include <Pegasus/Client/CIMClientException.h>
45 #include <Pegasus/Client/Linkage.h>
47 PEGASUS_NAMESPACE_BEGIN
52 This message is sent from the response decoder to the CIMClient, indicating
53 an error in issuing a CIM request.
55 class ClientExceptionMessage : public Message
58 ClientExceptionMessage(Exception* clientException_)
60 Message(CLIENT_EXCEPTION_MESSAGE),
61 clientException(clientException_)
65 Exception* clientException;
69 /** This class receives HTTP messages and decodes them into CIM Operation
70 Responses messages which it places on its output queue.
72 class PEGASUS_CLIENT_LINKAGE CIMOperationResponseDecoder : public MessageQueue
77 @param outputQueue queue to receive decoded HTTP messages.
79 CIMOperationResponseDecoder(
80 MessageQueue* outputQueue,
81 MessageQueue* encoderQueue,
82 ClientAuthenticator* authenticator,
86 ~CIMOperationResponseDecoder();
88 /** Initializes the encoder queue */
89 void setEncoderQueue(MessageQueue* encoderQueue);
91 /** This method is called when a message is enqueued on this queue. */
92 virtual void handleEnqueue();
96 void _handleHTTPMessage(
97 HTTPMessage* message);
99 void _handleMethodResponse(
101 const ContentLanguages& contentLanguages);
103 CIMCreateClassResponseMessage* _decodeCreateClassResponse(
104 XmlParser& parser, const String& messageId);
106 CIMGetClassResponseMessage* _decodeGetClassResponse(
107 XmlParser& parser, const String& messageId);
109 CIMModifyClassResponseMessage* _decodeModifyClassResponse(
110 XmlParser& parser, const String& messageId);
112 CIMEnumerateClassNamesResponseMessage* _decodeEnumerateClassNamesResponse(
113 XmlParser& parser, const String& messageId);
115 CIMEnumerateClassesResponseMessage* _decodeEnumerateClassesResponse(
116 XmlParser& parser, const String& messageId);
118 CIMDeleteClassResponseMessage* _decodeDeleteClassResponse(
119 XmlParser& parser, const String& messageId);
121 CIMCreateInstanceResponseMessage* _decodeCreateInstanceResponse(
122 XmlParser& parser, const String& messageId);
124 CIMGetInstanceResponseMessage* _decodeGetInstanceResponse(
125 XmlParser& parser, const String& messageId);
127 CIMModifyInstanceResponseMessage* _decodeModifyInstanceResponse(
128 XmlParser& parser, const String& messageId);
130 CIMEnumerateInstanceNamesResponseMessage* _decodeEnumerateInstanceNamesResponse(
131 XmlParser& parser, const String& messageId);
133 CIMEnumerateInstancesResponseMessage* _decodeEnumerateInstancesResponse(
134 XmlParser& parser, const String& messageId);
136 CIMDeleteInstanceResponseMessage* _decodeDeleteInstanceResponse(
137 XmlParser& parser, const String& messageId);
139 CIMGetPropertyResponseMessage* _decodeGetPropertyResponse(
140 XmlParser& parser, const String& messageId);
142 CIMSetPropertyResponseMessage* _decodeSetPropertyResponse(
143 XmlParser& parser, const String& messageId);
145 CIMSetQualifierResponseMessage* _decodeSetQualifierResponse(
146 XmlParser& parser, const String& messageId);
148 CIMGetQualifierResponseMessage* _decodeGetQualifierResponse(
149 XmlParser& parser, const String& messageId);
151 CIMEnumerateQualifiersResponseMessage* _decodeEnumerateQualifiersResponse(
152 XmlParser& parser, const String& messageId);
154 CIMDeleteQualifierResponseMessage* _decodeDeleteQualifierResponse(
155 XmlParser& parser, const String& messageId);
157 CIMReferenceNamesResponseMessage* _decodeReferenceNamesResponse(
158 XmlParser& parser, const String& messageId);
160 CIMReferencesResponseMessage* _decodeReferencesResponse(
161 XmlParser& parser, const String& messageId);
163 CIMAssociatorNamesResponseMessage* _decodeAssociatorNamesResponse(
164 XmlParser& parser, const String& messageId);
166 CIMAssociatorsResponseMessage* _decodeAssociatorsResponse(
167 XmlParser& parser, const String& messageId);
169 CIMExecQueryResponseMessage* _decodeExecQueryResponse(
170 XmlParser& parser, const String& messageId);
172 CIMInvokeMethodResponseMessage* _decodeInvokeMethodResponse(
173 XmlParser& parser, const String& messageId, const String& methodName);
175 MessageQueue* _outputQueue;
177 MessageQueue* _encoderQueue;
179 ClientAuthenticator* _authenticator;
181 // Controls decoder client displays 1 = con, 2 = log display
185 PEGASUS_NAMESPACE_END
187 #endif /* Pegasus_CIMOperationResponseDecoder_h */