1 mike 1.2 //%/////////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2000, 2001 BMC Software, Hewlett-Packard Company, IBM,
4 // The Open Group, Tivoli Systems
5 //
6 // Permission is hereby granted, free of charge, to any person obtaining a copy
7 // of this software and associated documentation files (the "Software"), to
8 // deal in the Software without restriction, including without limitation the
9 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 // sell copies of the Software, and to permit persons to whom the Software is
11 // furnished to do so, subject to the following conditions:
12 //
13 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
14 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
15 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
16 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
17 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
18 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 //
22 mike 1.2 //==============================================================================
23 //
24 // Author: Mike Brasher (mbrasher@bmc.com)
25 //
26 // Modified By: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
27 //
28 // Nag Boranna, Hewlett-Packard Company (nagaraja_boranna@hp.com)
29 //
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 #include <Pegasus/Client/ClientAuthenticator.h>
41 #include <Pegasus/Client/Linkage.h>
42
43 mike 1.2 PEGASUS_NAMESPACE_BEGIN
44
45 class XmlParser;
46
47 /** This class receives HTTP messages and decodes them into CIM Operation
48 Responses messages which it places on its output queue.
49 */
50 class PEGASUS_CLIENT_LINKAGE CIMOperationResponseDecoder : public MessageQueue
51 {
52 public:
53
54 /** Constuctor.
55 @param outputQueue queue to receive decoded HTTP messages.
56 */
57 CIMOperationResponseDecoder(
58 MessageQueue* outputQueue,
59 MessageQueue* encoderQueue,
60 ClientAuthenticator* authenticator);
61
62 /** Destructor. */
63 ~CIMOperationResponseDecoder();
64 mike 1.2
65 /** Initializes the encoder queue */
66 void setEncoderQueue(MessageQueue* encoderQueue);
67
68 /** This method is called when a message is enqueued on this queue. */
69 virtual void handleEnqueue();
70
71 /** Returns the queue name. */
72 virtual const char* getQueueName() const;
73
74 private:
75
76 void _handleHTTPMessage(
77 HTTPMessage* message);
78
79 void _handleMethodResponse(
80 char* content);
81
82 CIMCreateClassResponseMessage* _decodeCreateClassResponse(
83 XmlParser& parser, const String& messageId);
84
85 mike 1.2 CIMGetClassResponseMessage* _decodeGetClassResponse(
86 XmlParser& parser, const String& messageId);
87
88 CIMModifyClassResponseMessage* _decodeModifyClassResponse(
89 XmlParser& parser, const String& messageId);
90
91 CIMEnumerateClassNamesResponseMessage* _decodeEnumerateClassNamesResponse(
92 XmlParser& parser, const String& messageId);
93
94 CIMEnumerateClassesResponseMessage* _decodeEnumerateClassesResponse(
95 XmlParser& parser, const String& messageId);
96
97 CIMDeleteClassResponseMessage* _decodeDeleteClassResponse(
98 XmlParser& parser, const String& messageId);
99
100 CIMCreateInstanceResponseMessage* _decodeCreateInstanceResponse(
101 XmlParser& parser, const String& messageId);
102
103 CIMGetInstanceResponseMessage* _decodeGetInstanceResponse(
104 XmlParser& parser, const String& messageId);
105
106 mike 1.2 CIMModifyInstanceResponseMessage* _decodeModifyInstanceResponse(
107 XmlParser& parser, const String& messageId);
108
109 CIMEnumerateInstanceNamesResponseMessage* _decodeEnumerateInstanceNamesResponse(
110 XmlParser& parser, const String& messageId);
111
112 CIMEnumerateInstancesResponseMessage* _decodeEnumerateInstancesResponse(
113 XmlParser& parser, const String& messageId);
114
115 CIMDeleteInstanceResponseMessage* _decodeDeleteInstanceResponse(
116 XmlParser& parser, const String& messageId);
117
118 CIMGetPropertyResponseMessage* _decodeGetPropertyResponse(
119 XmlParser& parser, const String& messageId);
120
121 CIMSetPropertyResponseMessage* _decodeSetPropertyResponse(
122 XmlParser& parser, const String& messageId);
123
124 CIMSetQualifierResponseMessage* _decodeSetQualifierResponse(
125 XmlParser& parser, const String& messageId);
126
127 mike 1.2 CIMGetQualifierResponseMessage* _decodeGetQualifierResponse(
128 XmlParser& parser, const String& messageId);
129
130 CIMEnumerateQualifiersResponseMessage* _decodeEnumerateQualifiersResponse(
131 XmlParser& parser, const String& messageId);
132
133 CIMDeleteQualifierResponseMessage* _decodeDeleteQualifierResponse(
134 XmlParser& parser, const String& messageId);
135
136 CIMReferenceNamesResponseMessage* _decodeReferenceNamesResponse(
137 XmlParser& parser, const String& messageId);
138
139 CIMReferencesResponseMessage* _decodeReferencesResponse(
140 XmlParser& parser, const String& messageId);
141
142 CIMAssociatorNamesResponseMessage* _decodeAssociatorNamesResponse(
143 XmlParser& parser, const String& messageId);
144
145 CIMAssociatorsResponseMessage* _decodeAssociatorsResponse(
146 XmlParser& parser, const String& messageId);
147
148 mike 1.2 CIMInvokeMethodResponseMessage* _decodeInvokeMethodResponse(
149 XmlParser& parser, const String& messageId, const String& methodName);
150
151 MessageQueue* _outputQueue;
152
153 MessageQueue* _encoderQueue;
154
155 ClientAuthenticator* _authenticator;
156 };
157
158 PEGASUS_NAMESPACE_END
159
160 #endif /* Pegasus_CIMOperationResponseDecoder_h */
|