1 mike 1.2 //%///////-*-c++-*-/////////////////////////////////////////////////////////////
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 // : Mike Day (mdday@us.ibm.com)
28 // : Yi Zhou (yi_zhou@hp.com)
29 // : Carol Ann Krug Graves, Hewlett-Packard Company
30 // (carolann_graves@hp.com)
31 //
32 //
33 //%/////////////////////////////////////////////////////////////////////////////
34
35 #ifndef PegasusDispatcher_Dispatcher_h
36 #define PegasusDispatcher_Dispatcher_h
37
38 #include <Pegasus/Common/Config.h>
39 #include <Pegasus/Common/IPC.h>
40 #include <Pegasus/Common/DQueue.h>
41 #include <Pegasus/Common/Thread.h>
42 #include <Pegasus/Common/MessageQueue.h>
43 mike 1.2 #include <Pegasus/Common/CIMMessage.h>
44 #include <Pegasus/Common/CIMObject.h>
45 #include <Pegasus/Common/OperationContext.h>
|
46 chip 1.7
47 #include <Pegasus/Server/CIMServer.h>
|
48 mike 1.2
|
49 chip 1.7 #include <Pegasus/Repository/CIMRepository.h>
|
50 mike 1.2
|
51 chip 1.9 #include <Pegasus/Server/ServiceCIMOMHandle.h>
|
52 chip 1.8 #include <Pegasus/Server/ConfigurationManager/ConfigurationManagerQueue.h>
53
|
54 mike 1.2 PEGASUS_NAMESPACE_BEGIN
55
|
56 mday 1.11 class PEGASUS_SERVER_LINKAGE CIMOperationRequestDispatcher : public MessageQueueService
|
57 mike 1.2 {
58 public:
|
59 chip 1.6
|
60 mday 1.11 typedef MessageQueueService Base;
|
61 chip 1.6
|
62 kumpf 1.10 CIMOperationRequestDispatcher(
63 CIMRepository* repository, CIMServer* server);
|
64 chip 1.6
|
65 mday 1.16 virtual ~CIMOperationRequestDispatcher();
66
|
67 mday 1.13 virtual void handleEnqueue();
|
68 chip 1.6
|
69 kumpf 1.10 virtual const char* getQueueName() const;
|
70 chip 1.6
|
71 kumpf 1.10 void handleGetClassRequest(
72 CIMGetClassRequestMessage* request);
|
73 chip 1.6
|
74 kumpf 1.10 void handleGetInstanceRequest(
75 CIMGetInstanceRequestMessage* request);
|
76 chip 1.6
|
77 kumpf 1.10 void handleDeleteClassRequest(
78 CIMDeleteClassRequestMessage* request);
|
79 chip 1.6
|
80 kumpf 1.10 void handleDeleteInstanceRequest(
81 CIMDeleteInstanceRequestMessage* request);
|
82 chip 1.6
|
83 kumpf 1.10 void handleCreateClassRequest(
84 CIMCreateClassRequestMessage* request);
|
85 chip 1.6
|
86 kumpf 1.10 void handleCreateInstanceRequest(
87 CIMCreateInstanceRequestMessage* request);
|
88 chip 1.6
|
89 kumpf 1.10 void handleModifyClassRequest(
|
90 mike 1.2 CIMModifyClassRequestMessage* request);
91
92 void handleModifyInstanceRequest(
93 CIMModifyInstanceRequestMessage* request);
94
95 void handleEnumerateClassesRequest(
96 CIMEnumerateClassesRequestMessage* request);
97
98 void handleEnumerateClassNamesRequest(
99 CIMEnumerateClassNamesRequestMessage* request);
100
101 void handleEnumerateInstancesRequest(
102 CIMEnumerateInstancesRequestMessage* request);
103
104 void handleEnumerateInstanceNamesRequest(
105 CIMEnumerateInstanceNamesRequestMessage* request);
106
107 void handleAssociatorsRequest(
108 CIMAssociatorsRequestMessage* request);
109
110 void handleAssociatorNamesRequest(
111 mike 1.2 CIMAssociatorNamesRequestMessage* request);
112
113 void handleReferencesRequest(
114 CIMReferencesRequestMessage* request);
115
116 void handleReferenceNamesRequest(
117 CIMReferenceNamesRequestMessage* request);
118
119 void handleGetPropertyRequest(
120 CIMGetPropertyRequestMessage* request);
121
122 void handleSetPropertyRequest(
123 CIMSetPropertyRequestMessage* request);
124
125 void handleGetQualifierRequest(
126 CIMGetQualifierRequestMessage* request);
127
128 void handleSetQualifierRequest(
129 CIMSetQualifierRequestMessage* request);
130
131 void handleDeleteQualifierRequest(
132 mike 1.2 CIMDeleteQualifierRequestMessage* request);
133
134 void handleEnumerateQualifiersRequest(
135 CIMEnumerateQualifiersRequestMessage* request);
136
137 void handleInvokeMethodRequest(
138 CIMInvokeMethodRequestMessage* request);
139
140 void handleEnableIndicationSubscriptionRequest(
141 CIMEnableIndicationSubscriptionRequestMessage* request);
142
143 void handleModifyIndicationSubscriptionRequest(
144 CIMModifyIndicationSubscriptionRequestMessage* request);
145
146 void handleDisableIndicationSubscriptionRequest(
147 CIMDisableIndicationSubscriptionRequestMessage* request);
148
|
149 kumpf 1.10 void handleProcessIndicationRequest(
150 CIMProcessIndicationRequestMessage* request);
151
|
152 chip 1.8 //void loadRegisteredProviders(void);
|
153 mike 1.2
154 protected:
|
155 kumpf 1.10
|
156 mday 1.13 String _lookupProviderForClass(
157 const String& nameSpace, const String& className);
|
158 chip 1.14
|
159 mday 1.13 void _enqueueResponse(
160 CIMRequestMessage* request, CIMResponseMessage* response);
|
161 chip 1.14
162 /*
163 Message * _waitForResponse(
|
164 mday 1.13 const Uint32 messageType,
165 const Uint32 messageKey,
166 const Uint32 timeout = 0xffffffff);
|
167 chip 1.14 */
168
|
169 kumpf 1.17 CIMValue _convertValueType(const CIMValue& value, CIMType type);
170
171 void _fixInvokeMethodParameterTypes(CIMInvokeMethodRequestMessage* request);
172
173 void _fixSetPropertyValueType(CIMSetPropertyRequestMessage* request);
174
|
175 mday 1.13 CIMRepository * _repository;
|
176 chip 1.14
|
177 mday 1.13 ServiceCIMOMHandle _cimom;
|
178 chip 1.14
|
179 mday 1.13 ConfigurationManagerQueue _configurationManager;
|
180 chip 1.14
|
181 mday 1.13 AtomicInt _dying;
|
182 chip 1.14
183 // << Tue Feb 12 08:48:09 2002 mdd >> meta dispatcher integration
|
184 mday 1.13 virtual void _handle_async_request(AsyncRequest *req);
|
185 chip 1.14
|
186 mike 1.2 };
187
188 PEGASUS_NAMESPACE_END
189
190 #endif /* PegasusDispatcher_Dispatcher_h */
|