13 mday 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 //
21 // 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 // Author: Mike Day (mdday@us.ibm.com)
33 //
34 mday 1.2 //%/////////////////////////////////////////////////////////////////////////////
35 #ifndef Pegasus_BinaryMessageHandler_h
36 #define Pegasus_BinaryMessageHandler_h
37 #include <Pegasus/Common/Config.h>
38 #include <Pegasus/Common/AsyncOpNode.h>
|
40 mday 1.2 #include <Pegasus/Common/MessageQueueService.h>
41 #include <Pegasus/Common/Message.h>
42 #include <Pegasus/Common/CIMMessage.h>
43 #include <Pegasus/Common/Tracer.h>
44 #include <Pegasus/Common/TraceComponents.h>
45 #include <Pegasus/Common/IPC.h>
46 #include <Pegasus/Common/Thread.h>
47 #include <Pegasus/Common/Constants.h>
48 #include <Pegasus/Server/Linkage.h>
49
50 PEGASUS_NAMESPACE_BEGIN
51
52 /** This class provides an in-process binary client interface,
53 both for requests and responses.
54 */
55
56 class PEGASUS_SERVER_LINKAGE BinaryMessageHandler : public MessageQueueService
57 {
58 public:
59 typedef MessageQueueService Base;
60
61 mday 1.2 BinaryMessageHandler(MessageQueueService *outputQueue);
62 ~BinaryMessageHandler();
63
64 virtual Boolean messageOK(const Message * message);
65 virtual void handleEnqueue(void);
66 virtual void handleEnqueue(Message * message);
67 virtual void _handle_async_request(AsyncRequest * request);
68 protected:
69 static PEGASUS_THREAD_RETURN PEGASUS_THREAD_CDECL handle_binary_message(void *);
70
71 // **** Request Messages **** //
72
73 void handleCreateClassRequest(
74 AsyncOpNode *,
75 CIMCreateClassRequestMessage *) throw();
76
77 void handleGetClassRequest(
78 AsyncOpNode *,
79 CIMGetClassRequestMessage *) throw();
80
81 void handleModifyClassRequest(
82 mday 1.2 AsyncOpNode *,
83 CIMModifyClassRequestMessage *) throw();
84
85 void handleEnumerateClassNamesRequest(
86 AsyncOpNode *,
87 CIMEnumerateClassNamesRequestMessage *) throw();
88
89 void handleEnumerateClassesRequest(
90 AsyncOpNode *,
91 CIMEnumerateClassesRequestMessage *) throw();
92
93 void handleDeleteClassRequest(
94 AsyncOpNode *,
95 CIMDeleteClassRequestMessage *) throw();
96
97 void handleCreateInstanceRequest(
98 AsyncOpNode *,
99 CIMCreateInstanceRequestMessage *) throw();
100
101 void handleGetInstanceRequest(
102 AsyncOpNode *,
103 mday 1.2 CIMGetInstanceRequestMessage *) throw();
104
105 void handleModifyInstanceRequest(
106 AsyncOpNode *,
107 CIMModifyInstanceRequestMessage *) throw();
108
109 void handleEnumerateInstanceNamesRequest(
110 AsyncOpNode *,
111 CIMEnumerateInstanceNamesRequestMessage *) throw();
112
113 void handleEnumerateInstancesRequest(
114 AsyncOpNode *,
115 CIMEnumerateInstancesRequestMessage *) throw();
116
117 void handleDeleteInstanceRequest(
118 AsyncOpNode *,
119 CIMDeleteInstanceRequestMessage *) throw();
120
121 void handleSetQualifierRequest(
122 AsyncOpNode *,
123 CIMSetQualifierRequestMessage *) throw();
124 mday 1.2
125 void handleGetQualifierRequest(
126 AsyncOpNode *,
127 CIMGetQualifierRequestMessage *) throw();
128
129 void handleEnumerateQualifiersRequest(
130 AsyncOpNode *,
131 CIMEnumerateQualifiersRequestMessage *) throw();
132
133 void handleDeleteQualifiersRequest(
134 AsyncOpNode *,
135 CIMDeleteQualifierRequestMessage *) throw();
136
137 void handleReferenceNamesRequest(
138 AsyncOpNode *,
139 CIMReferenceNamesRequestMessage *) throw();
140
141 void handleReferencesRequest(
142 AsyncOpNode *,
143 CIMReferencesRequestMessage *) throw();
144
145 mday 1.2 void handleAssociatorNamesRequest(
146 AsyncOpNode *,
147 CIMAssociatorNamesRequestMessage *) throw();
148
149 void handleAssociatorsRequest(
150 AsyncOpNode *,
151 CIMAssociatorsRequestMessage *) throw();
152
153 void handleGetPropertyRequest(
154 AsyncOpNode *,
155 CIMGetPropertyRequestMessage *) throw();
156
157 void handleSetPropertyRequest(
158 AsyncOpNode *,
159 CIMSetPropertyRequestMessage *) throw();
160
161 void handleExecQueryRequest(
162 AsyncOpNode *,
163 CIMExecQueryRequestMessage *) throw();
164
165 void handleInvokeMethodRequest(
166 mday 1.2 AsyncOpNode *,
167 CIMInvokeMethodRequestMessage *) throw();
168
169 // **** Response Messages **** //
170
171 void handleCreateClassResponse(
172 AsyncOpNode *,
173 CIMCreateClassResponseMessage *) throw();
174
175 void handleGetClassResponse(
176 AsyncOpNode *,
177 CIMGetClassResponseMessage *) throw();
178
179 void handleModifyClassResponse(
180 AsyncOpNode *,
181 CIMModifyClassResponseMessage *) throw();
182
183 void handleEnumerateClassNamesResponse(
184 AsyncOpNode *,
185 CIMEnumerateClassNamesResponseMessage *) throw();
186
187 mday 1.2 void handleEnumerateClassesResponse(
188 AsyncOpNode *,
189 CIMEnumerateClassesResponseMessage *) throw();
190
191 void handleDeleteClassResponse(
192 AsyncOpNode *,
193 CIMDeleteClassResponseMessage *) throw();
194
195 void handleCreateInstanceResponse(
196 AsyncOpNode *,
197 CIMCreateInstanceResponseMessage *) throw();
198
199 void handleGetInstanceResponse(
200 AsyncOpNode *,
201 CIMGetInstanceResponseMessage *) throw();
202
203 void handleModifyInstanceResponse(
204 AsyncOpNode *,
205 CIMModifyInstanceResponseMessage *) throw();
206
207 void handleEnumerateInstanceNamesResponse(
208 mday 1.2 AsyncOpNode *,
209 CIMEnumerateInstanceNamesResponseMessage *) throw();
210
211 void handleEnumerateInstancesResponse(
212 AsyncOpNode *,
213 CIMEnumerateInstancesResponseMessage *) throw();
214
215 void handleDeleteInstanceResponse(
216 AsyncOpNode *,
217 CIMDeleteInstanceResponseMessage *) throw();
218
219 void handleGetPropertyResponse(
220 AsyncOpNode *,
221 CIMGetPropertyResponseMessage *) throw();
222
223 void handleSetPropertyResponse(
224 AsyncOpNode *,
225 CIMSetPropertyResponseMessage *) throw();
226
227 void handleSetQualifierResponse(
228 AsyncOpNode *,
229 mday 1.2 CIMSetQualifierResponseMessage *) throw();
230
231 void handleGetQualifierResponse(
232 AsyncOpNode *,
233 CIMGetQualifierResponseMessage *) throw();
234
235 void handleEnumerateQualifiersResponse(
236 AsyncOpNode *,
237 CIMEnumerateQualifiersResponseMessage *) throw();
238
239 void handleDeleteQualifierResponse(
240 AsyncOpNode *,
241 CIMDeleteQualifierResponseMessage *) throw();
242
243 void handleReferenceNamesResponse(
244 AsyncOpNode *,
245 CIMReferenceNamesResponseMessage *) throw();
246
247 void handleReferencesResponse(
248 AsyncOpNode *,
249 CIMReferencesResponseMessage *) throw();
250 mday 1.2
251 void handleAssociatorNamesResponse(
252 AsyncOpNode *,
253 CIMAssociatorNamesResponseMessage *) throw();
254
255 void handleAssociatorsResponse(
256 AsyncOpNode *,
257 CIMAssociatorsResponseMessage *) throw();
258
259 void handleExecQueryResponse(
260 AsyncOpNode *,
261 CIMExecQueryResponseMessage *) throw();
262
263 void handleInvokeMethodResponse(
264 AsyncOpNode *,
265 CIMInvokeMethodResponseMessage *) throw();
266
267 private:
268 BinaryMessageHandler(void);
269 BinaryMessageHandler & operator = (const BinaryMessageHandler & ) const;
270 void _handleRequest(AsyncOpNode *, Message *) throw();
271 mday 1.2 void _handleResponse(AsyncOpNode *, Message *) throw();
272
273
274 MessageQueueService* _outputQueue;
275
276 // Flag to indicate whether or not the CIMServer is shutting down.
|