(file) Return to CIMOperationRequestDispatcher.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Server

  1 martin 1.91 //%LICENSE////////////////////////////////////////////////////////////////
  2 martin 1.92 //
  3 martin 1.91 // Licensed to The Open Group (TOG) under one or more contributor license
  4             // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
  5             // this work for additional information regarding copyright ownership.
  6             // Each contributor licenses this file to you under the OpenPegasus Open
  7             // Source License; you may not use this file except in compliance with the
  8             // License.
  9 martin 1.92 //
 10 martin 1.91 // Permission is hereby granted, free of charge, to any person obtaining a
 11             // copy of this software and associated documentation files (the "Software"),
 12             // to deal in the Software without restriction, including without limitation
 13             // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 14             // and/or sell copies of the Software, and to permit persons to whom the
 15             // Software is furnished to do so, subject to the following conditions:
 16 martin 1.92 //
 17 martin 1.91 // The above copyright notice and this permission notice shall be included
 18             // in all copies or substantial portions of the Software.
 19 martin 1.92 //
 20 martin 1.91 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 21 martin 1.92 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 22 martin 1.91 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 23             // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 24             // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 25             // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 26             // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 27 martin 1.92 //
 28 martin 1.91 //////////////////////////////////////////////////////////////////////////
 29 brian.campbell 1.67 //
 30                     //%/////////////////////////////////////////////////////////////////////////////
 31                     
 32                     #ifndef PegasusDispatcher_Dispatcher_h
 33                     #define PegasusDispatcher_Dispatcher_h
 34                     
 35                     #include <Pegasus/Common/Config.h>
 36                     #include <Pegasus/Common/Thread.h>
 37                     #include <Pegasus/Common/MessageQueue.h>
 38                     #include <Pegasus/Common/CIMMessage.h>
 39                     #include <Pegasus/Common/CIMObject.h>
 40                     #include <Pegasus/Common/OperationContextInternal.h>
 41                     #include <Pegasus/Common/QueryExpressionRep.h>
 42                     #include <Pegasus/Common/AutoPtr.h>
 43                     
 44                     #include <Pegasus/Repository/CIMRepository.h>
 45                     
 46                     #include <Pegasus/Server/CIMServer.h>
 47 kumpf          1.82 #include \
 48                         <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h>
 49 brian.campbell 1.67 #include <Pegasus/Server/Linkage.h>
 50 venkat.puvvada 1.87 #include <Pegasus/Server/reg_table.h>
 51 brian.campbell 1.67 
 52                     PEGASUS_NAMESPACE_BEGIN
 53                     
 54                     // Class to aggregate and manage the information about classes and providers
 55                     // this simply masks some of the confusion of control providers, etc. today.
 56                     
 57                     class PEGASUS_SERVER_LINKAGE ProviderInfo
 58                     {
 59                     public:
 60 kumpf          1.86     ProviderInfo(const CIMName& className_)
 61                             : className(className_),
 62 venkat.puvvada 1.88           serviceId(0),
 63 kumpf          1.82           hasProvider(false),
 64                               hasProviderNormalization(false),
 65                               hasNoQuery(true)
 66 brian.campbell 1.67     {
 67                         }
 68 chip           1.72 
 69                         ProviderInfo(
 70 kumpf          1.86         const CIMName& className_,
 71 venkat.puvvada 1.87         Uint32 serviceId_,
 72 kumpf          1.86         const String& controlProviderName_)
 73                             : className(className_),
 74 venkat.puvvada 1.87           serviceId(serviceId_),
 75 kumpf          1.86           controlProviderName(controlProviderName_),
 76 kumpf          1.82           hasProvider(false),
 77                               hasProviderNormalization(false),
 78                               hasNoQuery(true)
 79 brian.campbell 1.67     {
 80                         }
 81 chip           1.72 
 82 kumpf          1.82     ProviderInfo(const ProviderInfo& providerInfo)
 83 chip           1.72         : className(providerInfo.className),
 84 venkat.puvvada 1.87           serviceId(providerInfo.serviceId),
 85 kumpf          1.82           controlProviderName(providerInfo.controlProviderName),
 86                               hasProvider(providerInfo.hasProvider),
 87 ouyang.jian    1.85           hasProviderNormalization(providerInfo.hasProviderNormalization),
 88 kumpf          1.82           hasNoQuery(providerInfo.hasNoQuery)
 89 brian.campbell 1.67     {
 90                             if (providerInfo.providerIdContainer.get() != 0)
 91                             {
 92                                 providerIdContainer.reset(
 93                                     new ProviderIdContainer(*providerInfo.providerIdContainer));
 94                             }
 95                         }
 96                     
 97 kumpf          1.82     ProviderInfo& operator=(const ProviderInfo& providerInfo)
 98 brian.campbell 1.67     {
 99                             if (&providerInfo != this)
100                             {
101                                 className = providerInfo.className;
102 venkat.puvvada 1.87             serviceId = providerInfo.serviceId;
103 brian.campbell 1.67             controlProviderName = providerInfo.controlProviderName;
104                                 hasProvider = providerInfo.hasProvider;
105 chip           1.72             hasProviderNormalization = providerInfo.hasProviderNormalization;
106 brian.campbell 1.67             hasNoQuery = providerInfo.hasNoQuery;
107 chip           1.72 
108 brian.campbell 1.67             providerIdContainer.reset();
109 chip           1.72 
110 brian.campbell 1.67             if (providerInfo.providerIdContainer.get() != 0)
111                                 {
112 kumpf          1.82                 providerIdContainer.reset(new ProviderIdContainer(
113                                         *providerInfo.providerIdContainer.get()));
114 brian.campbell 1.67             }
115                             }
116 chip           1.72 
117 kumpf          1.82         return *this;
118 brian.campbell 1.67     }
119                     
120 chip           1.72     CIMName className;
121 venkat.puvvada 1.87     Uint32 serviceId;
122 chip           1.72     String controlProviderName;
123                         Boolean hasProvider;
124                         Boolean hasProviderNormalization;
125                         Boolean hasNoQuery;
126 brian.campbell 1.67     AutoPtr<ProviderIdContainer> providerIdContainer;
127                     
128                     private:
129 kumpf          1.82     ProviderInfo()
130 chip           1.72     {
131                         }
132 brian.campbell 1.67 };
133                     
134                     /* Class to manage the aggregation of data required by post processors. This
135                         class is private to the dispatcher. An instance is created by the operation
136                         dispatcher to aggregate request and response information and used by the
137                         post processor to aggregate responses together.
138                     */
139                     class PEGASUS_SERVER_LINKAGE OperationAggregate
140                     {
141 dave.sudlik    1.78     friend class CIMOperationRequestDispatcher;
142 brian.campbell 1.67 public:
143 kumpf          1.82     /** Operation Aggregate constructor.  Builds an aggregate
144 brian.campbell 1.67         object.
145                             @param request
146                             @param msgRequestType
147                             @param messageId
148                             @param dest
149 kumpf          1.82         @param className
150 brian.campbell 1.67     */
151                         OperationAggregate(CIMRequestMessage* request,
152 kumpf          1.83         MessageType msgRequestType,
153 kumpf          1.82         String messageId,
154                             Uint32 dest,
155                             CIMName className,
156                             CIMNamespaceName nameSpace = CIMNamespaceName(),
157                             QueryExpressionRep* query = 0,
158                             String queryLanguage = String::EMPTY);
159 brian.campbell 1.67 
160                         virtual ~OperationAggregate();
161 chip           1.69 
162 brian.campbell 1.67     // Tests validity by checking the magic number we put into the
163                         // packet.
164                     
165                         Boolean valid() const;
166                     
167 kumpf          1.82     // Sets the total issued to the input parameter
168 brian.campbell 1.67 
169                         void setTotalIssued(Uint32 i);
170                     
171                         // Append a new entry to the response list.  Return value indicates
172                         // whether this response is the last one expected
173                     
174                         Boolean appendResponse(CIMResponseMessage* response);
175 chip           1.69 
176 brian.campbell 1.67     Uint32 numberResponses() const;
177                     
178                         CIMRequestMessage* getRequest();
179                     
180                         CIMResponseMessage* getResponse(const Uint32& pos);
181                     
182                         // allow dispatcher to remove the response so it doesn't become
183                         // destroyed when the poA is destroyed.
184                     
185                         CIMResponseMessage* removeResponse(const Uint32& pos);
186                     
187                         void deleteResponse(const Uint32&pos);
188                     
189 kumpf          1.83     MessageType getRequestType() const;
190 brian.campbell 1.67 
191 kumpf          1.82     void resequenceResponse(CIMResponseMessage& response);
192 brian.campbell 1.67 
193                         String _messageId;
194 kumpf          1.83     MessageType _msgRequestType;
195 brian.campbell 1.67     Uint32 _dest;
196                         CIMNamespaceName _nameSpace;
197                         CIMName _className;
198                         Array<String> propertyList;
199                         Uint64 _aggregationSN;
200                         QueryExpressionRep* _query;
201                         String _queryLanguage;
202                     
203                     private:
204                         /** Hidden (unimplemented) copy constructor */
205 kumpf          1.77     OperationAggregate(const OperationAggregate& x);
206 brian.campbell 1.67 
207                         Array<CIMResponseMessage*> _responseList;
208                         Mutex _appendResponseMutex;
209 dave.sudlik    1.78     Mutex _enqueueResponseMutex;
210 brian.campbell 1.67     CIMRequestMessage* _request;
211                         Uint32 _totalIssued;
212                         Uint32 _magicNumber;
213 kumpf          1.82     Uint32 _totalReceived;
214                         Uint32 _totalReceivedComplete;
215                         Uint32 _totalReceivedExpected;
216                         Uint32 _totalReceivedErrors;
217 a.dunfey       1.75     Uint32 _totalReceivedNotSupported;
218 brian.campbell 1.67 };
219                     
220 kumpf          1.82 class PEGASUS_SERVER_LINKAGE CIMOperationRequestDispatcher :
221                         public MessageQueueService
222 brian.campbell 1.67 {
223 kumpf          1.82     friend class QuerySupportRouter;
224                     public:
225 brian.campbell 1.67 
226 kumpf          1.82     typedef MessageQueueService Base;
227 brian.campbell 1.67 
228 kumpf          1.82     CIMOperationRequestDispatcher(
229                             CIMRepository* repository,
230                             ProviderRegistrationManager* providerRegistrationManager);
231 brian.campbell 1.67 
232 kumpf          1.82     virtual ~CIMOperationRequestDispatcher();
233 brian.campbell 1.67 
234 kumpf          1.82     virtual void handleEnqueue(Message*);
235 brian.campbell 1.67 
236 kumpf          1.82     virtual void handleEnqueue();
237 brian.campbell 1.67 
238 kumpf          1.82     void handleGetClassRequest(
239                             CIMGetClassRequestMessage* request);
240 brian.campbell 1.67 
241 kumpf          1.82     void handleGetInstanceRequest(
242                             CIMGetInstanceRequestMessage* request);
243 brian.campbell 1.67 
244 kumpf          1.82     void handleDeleteClassRequest(
245                             CIMDeleteClassRequestMessage* request);
246 brian.campbell 1.67 
247 kumpf          1.82     void handleDeleteInstanceRequest(
248                             CIMDeleteInstanceRequestMessage* request);
249 brian.campbell 1.67 
250 kumpf          1.82     void handleCreateClassRequest(
251                             CIMCreateClassRequestMessage* request);
252 brian.campbell 1.67 
253 kumpf          1.82     void handleCreateInstanceRequest(
254                             CIMCreateInstanceRequestMessage* request);
255 brian.campbell 1.67 
256 kumpf          1.82     void handleModifyClassRequest(
257                             CIMModifyClassRequestMessage* request);
258 brian.campbell 1.67 
259 kumpf          1.82     void handleModifyInstanceRequest(
260                             CIMModifyInstanceRequestMessage* request);
261 brian.campbell 1.67 
262 kumpf          1.82     void handleEnumerateClassesRequest(
263                             CIMEnumerateClassesRequestMessage* request);
264 brian.campbell 1.67 
265 kumpf          1.82     void handleEnumerateClassNamesRequest(
266                             CIMEnumerateClassNamesRequestMessage* request);
267 brian.campbell 1.67 
268 kumpf          1.82     void handleEnumerateInstancesRequest(
269                             CIMEnumerateInstancesRequestMessage* request);
270 brian.campbell 1.67 
271 kumpf          1.82     void handleEnumerateInstanceNamesRequest(
272                             CIMEnumerateInstanceNamesRequestMessage* request);
273 brian.campbell 1.67 
274 kumpf          1.82     void handleAssociatorsRequest(
275                             CIMAssociatorsRequestMessage* request);
276 brian.campbell 1.67 
277 kumpf          1.82     void handleAssociatorNamesRequest(
278                             CIMAssociatorNamesRequestMessage* request);
279 brian.campbell 1.67 
280 kumpf          1.82     void handleReferencesRequest(
281                             CIMReferencesRequestMessage* request);
282 brian.campbell 1.67 
283 kumpf          1.82     void handleReferenceNamesRequest(
284                             CIMReferenceNamesRequestMessage* request);
285 brian.campbell 1.67 
286 kumpf          1.82     void handleGetPropertyRequest(
287                             CIMGetPropertyRequestMessage* request);
288 brian.campbell 1.67 
289 kumpf          1.82     void handleSetPropertyRequest(
290                             CIMSetPropertyRequestMessage* request);
291 brian.campbell 1.67 
292 kumpf          1.82     void handleGetQualifierRequest(
293                             CIMGetQualifierRequestMessage* request);
294 brian.campbell 1.67 
295 kumpf          1.82     void handleSetQualifierRequest(
296                             CIMSetQualifierRequestMessage* request);
297 brian.campbell 1.67 
298 kumpf          1.82     void handleDeleteQualifierRequest(
299                             CIMDeleteQualifierRequestMessage* request);
300 brian.campbell 1.67 
301 kumpf          1.82     void handleEnumerateQualifiersRequest(
302                             CIMEnumerateQualifiersRequestMessage* request);
303 brian.campbell 1.67 
304 kumpf          1.82     void handleExecQueryRequest(
305                             CIMExecQueryRequestMessage* request);
306 brian.campbell 1.67 
307 kumpf          1.82     void handleInvokeMethodRequest(
308                             CIMInvokeMethodRequestMessage* request);
309 brian.campbell 1.67 
310 kumpf          1.82     static void _forwardForAggregationCallback(
311                             AsyncOpNode*,
312                             MessageQueue*,
313                             void*);
314 brian.campbell 1.67 
315 kumpf          1.82     static void _forwardRequestCallback(
316                             AsyncOpNode*,
317                             MessageQueue*,
318                             void*);
319 brian.campbell 1.67 
320 kumpf          1.82     // Response Handler functions
321 brian.campbell 1.67 
322 kumpf          1.82     void handleOperationResponseAggregation(OperationAggregate* poA);
323 brian.campbell 1.67 
324 kumpf          1.82     void handleReferencesResponseAggregation(OperationAggregate* poA);
325 brian.campbell 1.67 
326 kumpf          1.82     void handleReferenceNamesResponseAggregation(OperationAggregate* poA);
327 brian.campbell 1.67 
328 kumpf          1.82     void handleAssociatorsResponseAggregation(OperationAggregate* poA);
329 brian.campbell 1.67 
330 kumpf          1.82     void handleAssociatorNamesResponseAggregation(OperationAggregate* poA);
331 brian.campbell 1.67 
332 kumpf          1.82     void handleEnumerateInstancesResponseAggregation(OperationAggregate* poA);
333 brian.campbell 1.67 
334 kumpf          1.82     void handleEnumerateInstanceNamesResponseAggregation(
335                             OperationAggregate* poA);
336 brian.campbell 1.67 
337 kumpf          1.82     void handleExecQueryResponseAggregation(OperationAggregate* poA);
338 brian.campbell 1.67 
339 kumpf          1.82 protected:
340                     
341                         /** _getSubClassNames - Gets the names of all subclasses of the defined
342                             class (including the class) and returns it in an array of strings. Uses
343                             a similar function in the repository class to get the names.
344                             @param namespace
345                             @param className
346                             @return Array of strings with class names.  Note that there should be
347                             at least one classname in the array (the input name)
348                             Note that there is a special exception to this function, the __namespace
349                             class which does not have any representation in the class repository.
350                             @exception CIMException(CIM_ERR_INVALID_CLASS)
351                         */
352 brian.campbell 1.67     Array<CIMName> _getSubClassNames(
353                             const CIMNamespaceName& nameSpace,
354 david.dillard  1.73         const CIMName& className);
355 brian.campbell 1.67 
356                         Boolean _lookupInternalProvider(
357                             const CIMNamespaceName& nameSpace,
358                             const CIMName& className,
359 venkat.puvvada 1.87         Uint32 &serviceId,
360 brian.campbell 1.67         String& provider);
361                     
362 kumpf          1.82     /* Boolean _lookupNewQueryProvider(
363 brian.campbell 1.67         const CIMNamespaceName& nameSpace,
364                             const CIMName& className,
365                             String& serviceName,
366                             String& controlProviderName,
367 kumpf          1.82         Boolean* notQueryProvider); */
368 brian.campbell 1.67 
369 chip           1.72     ProviderInfo _lookupNewInstanceProvider(
370 brian.campbell 1.67         const CIMNamespaceName& nameSpace,
371 chip           1.72         const CIMName& className);
372 brian.campbell 1.67 
373 kumpf          1.82     /* String _lookupQueryProvider(
374 brian.campbell 1.67         const CIMNamespaceName& nameSpace,
375                             const CIMName& className,
376 kumpf          1.82         Boolean* notQueryProvider); */
377 brian.campbell 1.67 
378 chip           1.72     ProviderInfo _lookupInstanceProvider(
379 brian.campbell 1.67         const CIMNamespaceName& nameSpace,
380 chip           1.72         const CIMName& className);
381 brian.campbell 1.67 
382 kumpf          1.82     /* Array<ProviderInfo> _lookupAllQueryProviders(
383 brian.campbell 1.67         const CIMNamespaceName& nameSpace,
384                             const CIMName& className,
385 david.dillard  1.73         Uint32& providerCount); */
386 brian.campbell 1.67 
387 david.dillard  1.73     // @exception CIMException
388 brian.campbell 1.67     Array<ProviderInfo> _lookupAllInstanceProviders(
389                             const CIMNamespaceName& nameSpace,
390                             const CIMName& className,
391 david.dillard  1.73         Uint32& providerCount);
392 brian.campbell 1.67 
393                         Array<ProviderInfo> _lookupAllAssociationProviders(
394                             const CIMNamespaceName& nameSpace,
395                             const CIMObjectPath& objectName,
396                             const CIMName& assocClass,
397                             const String& role,
398                             Uint32& providerCount);
399                     
400                         Boolean _lookupNewAssociationProvider(
401                             const CIMNamespaceName& nameSpace,
402                             const CIMName& assocClass,
403 venkat.puvvada 1.87         Uint32 &serviceId,
404 brian.campbell 1.67         String& controlProviderName,
405 kumpf          1.82         ProviderIdContainer** container);
406 brian.campbell 1.67 
407                         Array<String> _lookupAssociationProvider(
408                             const CIMNamespaceName& nameSpace,
409                             const CIMName& assocClass,
410 kumpf          1.82         ProviderIdContainer** container);
411 brian.campbell 1.67 
412 kumpf          1.82     String _lookupMethodProvider(
413                             const CIMNamespaceName& nameSpace,
414                             const CIMName& className,
415                             const CIMName& methodName,
416                             ProviderIdContainer** providerIdContainer);
417 brian.campbell 1.67 
418 kumpf          1.82     void _forwardRequestToService(
419 venkat.puvvada 1.87         Uint32 serviceId,
420 brian.campbell 1.67         CIMRequestMessage* request,
421 kumpf          1.81         CIMRequestMessage* requestCopy);
422 brian.campbell 1.67 
423 kumpf          1.82     void _forwardRequestForAggregation(
424 venkat.puvvada 1.87         Uint32 serviceId,
425 brian.campbell 1.67         const String& controlProviderName,
426                             CIMRequestMessage* request,
427                             OperationAggregate* poA,
428 kumpf          1.82         CIMResponseMessage* response = 0);
429 brian.campbell 1.67 
430 kumpf          1.82     void _forwardRequestToProviderManager(
431 brian.campbell 1.67         const CIMName& className,
432 venkat.puvvada 1.87         Uint32 serviceId,
433 brian.campbell 1.67         const String& controlProviderName,
434 kumpf          1.81         CIMRequestMessage* request,
435                             CIMRequestMessage* requestCopy);
436 brian.campbell 1.67 
437 kumpf          1.82     void _getProviderName(
438 kumpf          1.81           const OperationContext& context,
439                               String& moduleName,
440                               String& providerName);
441                     
442 kumpf          1.82     void _logOperation(
443                             const CIMRequestMessage* request,
444                             const CIMResponseMessage* response);
445                     
446                         Boolean _enqueueResponse(
447                             OperationAggregate*& poA,
448                             CIMResponseMessage*& response);
449 kumpf          1.81 
450 kumpf          1.82     void _enqueueResponse(
451                             CIMRequestMessage* request,
452                             CIMResponseMessage* response);
453 brian.campbell 1.67 
454 kumpf          1.82     CIMValue _convertValueType(const CIMValue& value, CIMType type);
455 brian.campbell 1.67 
456 kumpf          1.82     void _fixInvokeMethodParameterTypes(CIMInvokeMethodRequestMessage* request);
457 brian.campbell 1.67 
458 kumpf          1.82     void _fixSetPropertyValueType(CIMSetPropertyRequestMessage* request);
459 brian.campbell 1.67 
460 kumpf          1.84     /**
461                             Checks whether the specified class is defined in the specified
462                             namespace.
463                             @param nameSpace The namespace to check for className.
464                             @param className The name of the class to check for in nameSpace.
465                             @return True if the specified class is defined in the specified
466                                 namespace, false otherwise.
467                         */
468                         Boolean _checkExistenceOfClass(
469                             const CIMNamespaceName& nameSpace,
470                             const CIMName& className);
471                     
472 mike           1.90     CIMConstClass _getClass(
473 kumpf          1.82         const CIMNamespaceName& nameSpace,
474                             const CIMName& className,
475                             CIMException& cimException);
476 brian.campbell 1.67 
477 kumpf          1.84     /**
478                             Checks whether the number of providers required to complete an
479                             operation is greater than the maximum allowed.
480                             @param nameSpace The target namespace of the operation.
481                             @param className The name of the class specified in the request.
482                             @param providerCount The number of providers required to complete the
483                                 operation.
484                             @exception CIMException if the providerCount is greater than the
485                                 maximum allowed.
486                         */
487                         void _checkEnumerateTooBroad(
488 kumpf          1.82         const CIMNamespaceName& nameSpace,
489                             const CIMName& className,
490 kumpf          1.84         Uint32 providerCount);
491 chip           1.69 
492 kumpf          1.82     CIMRepository* _repository;
493 brian.campbell 1.67 
494 kumpf          1.82     ProviderRegistrationManager* _providerRegistrationManager;
495 brian.campbell 1.67 
496 kumpf          1.82     Boolean _enableAssociationTraversal;
497                         Boolean _enableIndicationService;
498                         Uint32 _maximumEnumerateBreadth;
499                         static Uint64 cimOperationAggregationSN;
500 venkat.puvvada 1.87     Uint32 _providerManagerServiceId;
501 kumpf          1.82 #ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION
502                         Array<String> _excludeModulesFromNormalization;
503                     #endif
504 brian.campbell 1.67 
505 kumpf          1.82     // << Tue Feb 12 08:48:09 2002 mdd >> meta dispatcher integration
506                         virtual void _handle_async_request(AsyncRequest* req);
507 brian.campbell 1.67 
508 kumpf          1.82     // the following two methods enable specific query language implementations
509 brian.campbell 1.67 
510 kumpf          1.82     /* void handleQueryRequest(
511                             CIMExecQueryRequestMessage* request);
512 chip           1.71 
513 kumpf          1.82     void handleQueryResponseAggregation(
514                             OperationAggregate* poA);
515 brian.campbell 1.67 
516 kumpf          1.82     void applyQueryToEnumeration(CIMResponseMessage* msg,
517                             QueryExpressionRep* query);
518                         */
519 brian.campbell 1.67 
520 kumpf          1.82 private:
521                         static void _handle_enqueue_callback(AsyncOpNode*, MessageQueue*, void*);
522 brian.campbell 1.67 
523 venkat.puvvada 1.87     DynamicRoutingTable *_routing_table;
524 brian.campbell 1.67 };
525                     
526                     PEGASUS_NAMESPACE_END
527                     
528                     #endif /* PegasusDispatcher_Dispatcher_h */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2