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

  1 karl  1.62 //%2005////////////////////////////////////////////////////////////////////////
  2 mike  1.4  //
  3 karl  1.58 // 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 karl  1.48 // IBM Corp.; EMC Corporation, The Open Group.
  7 karl  1.58 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8            // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9 karl  1.62 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10            // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 mike  1.4  //
 12            // Permission is hereby granted, free of charge, to any person obtaining a copy
 13 chip  1.24 // of this software and associated documentation files (the "Software"), to
 14            // deal in the Software without restriction, including without limitation the
 15            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 16 mike  1.4  // sell copies of the Software, and to permit persons to whom the Software is
 17            // furnished to do so, subject to the following conditions:
 18 kumpf 1.37 // 
 19 chip  1.24 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 20 mike  1.4  // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 21            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 22 chip  1.24 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 23            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 24            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 25 mike  1.4  // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 26            // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 27            //
 28            //==============================================================================
 29            //
 30            // Author: Mike Brasher (mbrasher@bmc.com)
 31            //
 32 mike  1.6  // Modified By: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
 33 kumpf 1.27 //              Carol Ann Krug Graves, Hewlett-Packard Company
 34            //                  (carolann_graves@hp.com)
 35            //              Mike Day (mdday@us.ibm.com)
 36            //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
 37 sage  1.30 //              Arthur Pichlkostner (via Markus: sedgewick_de@yahoo.de)
 38 w.white 1.56 //				Willis White (whiwill@us.ibm.com) PEP 127 and 128
 39 brian.campbell 1.55 //         Brian G. Campbell, EMC (campbell_brian@emc.com) - PEP140/phase1
 40 a.arora        1.57 //              Amit K Arora, IBM (amita@in.ibm.com) for Bug#1090
 41 w.white        1.56 //		
 42 mike           1.4  //
 43                     //%/////////////////////////////////////////////////////////////////////////////
 44                     
 45                     #ifndef Pegasus_Message_h
 46                     #define Pegasus_Message_h
 47                     
 48 mike           1.6  #include <Pegasus/Common/Config.h>
 49 mike           1.4  #include <iostream>
 50 mike           1.6  #include <cstring>
 51 kumpf          1.39 #include <Pegasus/Common/InternalException.h>
 52 mike           1.6  #include <Pegasus/Common/IPC.h>
 53 sage           1.30 #include <Pegasus/Common/StatisticalData.h>
 54 kumpf          1.38 #include <Pegasus/Common/Linkage.h>
 55 w.white        1.68 #include <Pegasus/Common/TimeValue.h>
 56 w.white        1.63 #include <Pegasus/Common/CIMOperationType.h>
 57 mike           1.4  
 58                     PEGASUS_NAMESPACE_BEGIN
 59                     
 60 mday           1.18 // REVIEW: could class be renamed to MessageMask (coding standard)
 61 mike           1.11 
 62 chip           1.24 class PEGASUS_COMMON_LINKAGE message_mask
 63 mike           1.6  {
 64                        public:
 65 mike           1.11 
 66 mike           1.6        static Uint32 type_legacy;
 67 mday           1.9        static Uint32 type_CIMOperation;
 68                           static Uint32 type_CIMAsyncOperation;
 69                           static Uint32 type_export;
 70                           static Uint32 type_lifetime;
 71 mike           1.6        static Uint32 type_socket;
 72                           static Uint32 type_connection;
 73                           static Uint32 type_http;
 74 kumpf          1.27       static Uint32 type_http_error;
 75 mike           1.6        static Uint32 type_cimom;
 76 mday           1.9        static Uint32 type_control;
 77                           static Uint32 type_service;
 78                           static Uint32 type_broadcast;
 79 kumpf          1.28       static Uint32 type_client_exception;
 80 chip           1.24 
 81 mday           1.9        static Uint32 ha_no_delete;
 82                           static Uint32 ha_request;
 83                           static Uint32 ha_reply;
 84 mday           1.10       static Uint32 ha_synchronous;
 85 mday           1.13       static Uint32 ha_async;
 86 mday           1.22       static Uint32 ha_wait;
 87 chip           1.24 
 88                     
 89                           // more for documentation than for use
 90 mike           1.7  
 91 mday           1.9        inline Uint32 get_type(Uint32 flags)
 92 mike           1.6        {
 93                     	 return (flags & 0x000fffff);
 94                           }
 95                     
 96                           inline Uint32 get_handling(Uint32 flags)
 97                           {
 98                     	 return( flags & 0xfff00000);
 99                           }
100                     };
101                     
102 mday           1.20 class cimom;
103 mike           1.4  class MessageQueue;
104 mday           1.19 class MessageQueueService;
105                     class AsyncLegacyOperationStart;
106                     class AsyncLegacyOperationResult;
107 mike           1.4  
108 kumpf          1.40 enum HttpMethod
109                     {
110                         HTTP_METHOD__POST,
111                         HTTP_METHOD_M_POST
112                     };
113                     
114 chip           1.24 /** The Message class and derived classes are used to pass messages between
115 mike           1.4      modules. Messages are passed between modules using the message queues
116                         (see MessageQueue class). Derived classes may add their own fields.
117                         This base class defines two common fields: type, which is the type of
118                         the message, and key which is a key value whose meaning is defined by
119                         the derived class. The MessageQueue class provides methods for finding
120                         messages by both type and key.
121                     
122                         The Message class also provides previous and next pointers which are
123                         used to place the messages on a queue by the MessageQueue class.
124                     */
125 mike           1.5  class PEGASUS_COMMON_LINKAGE Message
126 mike           1.4  {
127 mday           1.8     public:
128 mike           1.4  
129 mday           1.8        Message(
130 mday           1.20 	 Uint32 type,
131                     	 Uint32 destination = 0,
132 chip           1.24 	 Uint32 key = getNextKey(),
133 mday           1.8  	 Uint32 routing_code = 0,
134 chip           1.24 	 Uint32 mask = message_mask::type_legacy )
135                     	 :
136                     	 _type(type),
137                     	 _key(key),
138                     	 _routing_code(routing_code),
139 mday           1.8  	 _mask(mask),
140 kumpf          1.45          _httpMethod (HTTP_METHOD__POST),
141 mday           1.44 	_last_thread_id(pegasus_thread_self()),
142 chip           1.24 	 _next(0),
143 mday           1.19 	 _prev(0),
144 mday           1.20 	 _async(0),
145 brian.campbell 1.55 	 dest(destination),
146                     	 _isComplete(true), 
147                     	 _index(0)
148 chip           1.24       {
149 mday           1.8  
150                           }
151 mike           1.6  
152 mday           1.32       Message & operator = ( const Message & msg)
153                           {
154                     	 if (this != &msg)
155                     	 {
156                     	    _type = msg._type;
157                     	    _key = msg._key;
158                     	    _routing_code = msg._routing_code;
159                     	    _mask = msg._mask;
160 mday           1.44 	    _last_thread_id = msg._last_thread_id;
161 mday           1.32 	    _next = _prev = _async = 0;
162                     	    dest = msg.dest;
163 brian.campbell 1.55 			_httpMethod = msg._httpMethod;
164                     			_index = msg._index;
165                     			_isComplete = msg._isComplete;
166 mday           1.44 	    
167 mday           1.32 	 }
168                     	 return *this;
169                           }
170 chip           1.34 
171 chip           1.24 
172                           virtual ~Message();
173 mike           1.4  
174 mday           1.8        Uint32 getType() const { return _type; }
175 mike           1.4  
176 mday           1.8        void setType(Uint32 type) { _type = type; }
177 mike           1.4  
178 mday           1.8        Uint32 getKey() const { return _key; }
179 mike           1.4  
180 mday           1.8        void setKey(Uint32 key) { _key = key; }
181 mike           1.4  
182 mday           1.8        Uint32 getRouting() const { return _routing_code; }
183                           void setRouting(Uint32 routing) { _routing_code = routing; }
184 mike           1.4  
185 mday           1.8        Uint32 getMask() const { return _mask; }
186 chip           1.24 
187 mday           1.8        void setMask(Uint32 mask) { _mask = mask; }
188 chip           1.24 
189 kumpf          1.40       HttpMethod getHttpMethod() const { return _httpMethod; }
190                     
191                           void setHttpMethod(HttpMethod httpMethod) {_httpMethod = httpMethod;}
192                     
193 w.white        1.63       
194 karl           1.61 #ifndef PEGASUS_DISABLE_PERFINST
195 sage           1.30 //
196                     // Needed for performance measurement
197                     //
198                     
199                           void startServer();
200                     
201                           void endServer();
202                     
203                           void startProvider();
204                     
205                           void endProvider();
206                     
207 w.white        1.68       TimeValue getStartServerTime() const { return _timeServerStart; }
208 sage           1.30 
209 w.white        1.68       void setStartServerTime(TimeValue timeServerStart)
210 sage           1.30       {
211                                _timeServerStart = timeServerStart;
212                           }
213                     
214 w.white        1.68       TimeValue getStartProviderTime() const { return _timeProviderStart; }
215 sage           1.30 
216 w.white        1.68       void setStartProviderTime(TimeValue timeProviderStart)
217 sage           1.30       {
218                               _timeProviderStart = timeProviderStart;
219                           }
220                     
221 w.white        1.68       TimeValue getEndServerTime() const { return _timeServerEnd; }
222 sage           1.30 
223 w.white        1.68       void setEndServerTime (TimeValue timeServerEnd)
224 sage           1.30       {
225                               _timeServerEnd = timeServerEnd;
226                           }
227                     
228 w.white        1.68       TimeValue getEndProviderTime() const { return _timeProviderEnd; }
229 sage           1.30 
230 w.white        1.68       void setEndProviderTime(TimeValue timeProviderEnd)
231 sage           1.30       {
232                               _timeProviderEnd = timeProviderEnd;
233                           }
234                     
235 w.white        1.68 	  TimeValue getProviderTime() { return _providerTime;}
236 w.white        1.52 
237 w.white        1.68       TimeValue getTotalTime() { return _totalTime; }
238 w.white        1.52 
239 w.white        1.68 	  TimeValue getServerTime() { return _serverTime; }
240 sage           1.30 //
241 sage           1.31 #endif
242 sage           1.30 
243 mday           1.8        Message* getNext() { return _next; }
244 mike           1.4  
245 mday           1.8        const Message* getNext() const { return _next; }
246 mike           1.4  
247 mday           1.8        Message* getPrevious() { return _prev; }
248 mike           1.4  
249 mday           1.8        const Message* getPrevious() const { return _prev; }
250 mike           1.4  
251 chip           1.24       static Uint32 getNextKey()
252                           {
253 a.arora        1.57           AutoMutex autoMut(_mut);
254                               Uint32 ret = _nextKey++;
255                               return ret;
256 mike           1.6        }
257 chip           1.24 
258 a.dunfey       1.67       static CIMOperationType convertMessageTypetoCIMOpType(Uint32 type);
259 w.white        1.63 
260 joyce.j        1.69 #ifdef PEGASUS_DEBUG
261 mike           1.36       virtual void print(
262                     	  PEGASUS_STD(ostream)& os, 
263                     	  Boolean printHeader = true) const;
264 joyce.j        1.69 #endif
265 mike           1.4  
266 chip           1.24       // << Thu Dec 27 10:46:04 2001 mdd >> for use with DQueue container
267                           // as used by AsyncOpNode
268 kumpf          1.23       Boolean operator == (const void *msg )
269 mday           1.13       {
270 mday           1.16 	 if (reinterpret_cast<void *>(this) == msg )
271 mday           1.13 	    return true;
272                     	 return false;
273                           }
274 chip           1.24 
275 mday           1.22       Message *get_async(void)
276                           {
277                     	 Message *ret = _async;
278                     	 _async = 0;
279                     	 return ret;
280 chip           1.24 	
281 mday           1.22       }
282 chip           1.24 
283 mday           1.22       void put_async(Message * msg)
284                           {
285                     	 _async = msg;
286                           }
287 chip           1.24 
288 mday           1.44       // << Tue Jul  1 11:02:49 2003 mdd >> pep_88 and helper for i18n and l10n
289                           Boolean thread_changed(void)
290                           {
291                     	 if(_last_thread_id != pegasus_thread_self())
292                     	 {
293                     	    _last_thread_id = pegasus_thread_self();
294                     	    return true;
295                     	 }
296                     
297                     	 return false;
298                           }
299                           
300                           // << Tue Jul  1 13:41:02 2003 mdd >> pep_88 - 
301                           // assist in synchronizing responses with requests
302                     
303                           void synch_response(Message *req)
304                           {
305                     	 _key = req->_key;
306                     	 _routing_code = req->_routing_code;
307                           }
308                           
309 brian.campbell 1.55 			// set the message index indicating what piece (or sequence) this is
310                     			// message indexes start at zero
311                     			void setIndex(Uint32 index) { _index = index; }
312                     
313                     			// increment the message index
314                     			void incrementIndex() { _index++; }
315                     
316                     			// set the complete flag indicating if this message piece is the 
317                     			// last or not
318                     			void setComplete(Boolean isComplete) 
319                     				{ _isComplete = isComplete ? true:false; }
320                     
321                     			// get the message index (or sequence number)
322                     			Uint32 getIndex() const { return _index; }
323                     
324                     			// is this the first piece of the message ?
325                     			Boolean isFirst() const { return _index == 0 ? true : false; }
326                     
327                     			// is this message complete? (i.e the last in a one or more sequence)
328                     			Boolean isComplete() const { return _isComplete; }
329 chip           1.24 
330 mday           1.8     private:
331 mike           1.6        Uint32 _type;
332                           Uint32 _key;
333 mday           1.8        Uint32 _routing_code;
334 mike           1.6        Uint32 _mask;
335 kumpf          1.40       HttpMethod _httpMethod;
336 sage           1.30 // Needed for performance measurement
337 w.white        1.68       TimeValue _timeServerStart;
338                           TimeValue _timeServerEnd;
339                           TimeValue _timeProviderStart;
340                           TimeValue _timeProviderEnd;
341                     	  TimeValue _providerTime;
342                     	  TimeValue _serverTime;	
343                           TimeValue _totalTime;
344 sage           1.30 //
345 mday           1.44 
346                           // << Tue Jul  1 11:02:35 2003 mdd >> pep_88 and helper for i18n and l10n
347                           PEGASUS_THREAD_TYPE _last_thread_id;
348                           
349 mike           1.6        Message* _next;
350                           Message* _prev;
351 mday           1.32 
352 mday           1.19    protected:
353 mday           1.32 
354                        public:
355 mday           1.19       Message *_async;
356 mday           1.20       Uint32 dest;
357 w.white        1.56 	  //needed for PEP 128 - transmitting Server Response Time to Client
358                           Uint64 totServerTime;
359                     
360 mday           1.19    private:
361 mike           1.6        MessageQueue* _owner;
362 brian.campbell 1.55       Boolean _isComplete;
363                           Uint32 _index;
364 mike           1.6        static Uint32 _nextKey;
365                           static Mutex _mut;
366 mday           1.44 
367                     
368                     
369 mday           1.20       friend class cimom;
370 mike           1.6        friend class MessageQueue;
371 mday           1.19       friend class MessageQueueService;
372                           friend class AsyncLegacyOperationStart;
373                           friend class AsyncLegacyOperationResult;
374 chip           1.24 
375 mike           1.4  };
376 mike           1.5  
377 mike           1.6  
378 mike           1.5  enum MessageType
379                     {
380                         DUMMY_MESSAGE,
381                     
382                         // CIM Message types:
383                     
384                         CIM_GET_CLASS_REQUEST_MESSAGE,
385                         CIM_GET_INSTANCE_REQUEST_MESSAGE,
386 mike           1.6      CIM_EXPORT_INDICATION_REQUEST_MESSAGE,
387 mike           1.5      CIM_DELETE_CLASS_REQUEST_MESSAGE,
388                         CIM_DELETE_INSTANCE_REQUEST_MESSAGE,
389                         CIM_CREATE_CLASS_REQUEST_MESSAGE,
390                         CIM_CREATE_INSTANCE_REQUEST_MESSAGE,
391                         CIM_MODIFY_CLASS_REQUEST_MESSAGE,
392                         CIM_MODIFY_INSTANCE_REQUEST_MESSAGE,
393 mday           1.32     CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE, //10
394 mike           1.5      CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE,
395                         CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE,
396                         CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE,
397                         CIM_EXEC_QUERY_REQUEST_MESSAGE,
398                         CIM_ASSOCIATORS_REQUEST_MESSAGE,
399                         CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE,
400                         CIM_REFERENCES_REQUEST_MESSAGE,
401                         CIM_REFERENCE_NAMES_REQUEST_MESSAGE,
402                         CIM_GET_PROPERTY_REQUEST_MESSAGE,
403 mday           1.32     CIM_SET_PROPERTY_REQUEST_MESSAGE, //20
404 mike           1.5      CIM_GET_QUALIFIER_REQUEST_MESSAGE,
405                         CIM_SET_QUALIFIER_REQUEST_MESSAGE,
406                         CIM_DELETE_QUALIFIER_REQUEST_MESSAGE,
407                         CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE,
408                         CIM_INVOKE_METHOD_REQUEST_MESSAGE,
409 mike           1.6      CIM_ENABLE_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE,
410                         CIM_MODIFY_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE,
411                         CIM_DISABLE_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE,
412 kumpf          1.15     CIM_PROCESS_INDICATION_REQUEST_MESSAGE,
413 mday           1.32     CIM_HANDLE_INDICATION_REQUEST_MESSAGE, // 30
414 kumpf          1.15     CIM_NOTIFY_PROVIDER_REGISTRATION_REQUEST_MESSAGE,
415                         CIM_NOTIFY_PROVIDER_TERMINATION_REQUEST_MESSAGE,
416 chip           1.25 
417                         // new
418                         CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE,
419                         CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE,
420                         CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE,
421                     
422 kumpf          1.29     // new
423                         CIM_DISABLE_MODULE_REQUEST_MESSAGE,
424                         CIM_ENABLE_MODULE_REQUEST_MESSAGE,
425                     
426 carolann.graves 1.64     CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE,
427 kumpf           1.35 
428 kumpf           1.43     CIM_GET_CLASS_RESPONSE_MESSAGE,
429 carolann.graves 1.64     CIM_GET_INSTANCE_RESPONSE_MESSAGE,  // 40
430 kumpf           1.43     CIM_EXPORT_INDICATION_RESPONSE_MESSAGE,
431 mike            1.5      CIM_DELETE_CLASS_RESPONSE_MESSAGE,
432                          CIM_DELETE_INSTANCE_RESPONSE_MESSAGE,
433                          CIM_CREATE_CLASS_RESPONSE_MESSAGE,
434                          CIM_CREATE_INSTANCE_RESPONSE_MESSAGE,
435                          CIM_MODIFY_CLASS_RESPONSE_MESSAGE,
436                          CIM_MODIFY_INSTANCE_RESPONSE_MESSAGE,
437 carolann.graves 1.64     CIM_ENUMERATE_CLASSES_RESPONSE_MESSAGE,
438 mike            1.5      CIM_ENUMERATE_CLASS_NAMES_RESPONSE_MESSAGE,
439 carolann.graves 1.64     CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE,  // 50
440 mike            1.5      CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE,
441                          CIM_EXEC_QUERY_RESPONSE_MESSAGE,
442                          CIM_ASSOCIATORS_RESPONSE_MESSAGE,
443                          CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE,
444                          CIM_REFERENCES_RESPONSE_MESSAGE,
445                          CIM_REFERENCE_NAMES_RESPONSE_MESSAGE,
446                          CIM_GET_PROPERTY_RESPONSE_MESSAGE,
447 carolann.graves 1.64     CIM_SET_PROPERTY_RESPONSE_MESSAGE,
448 mike            1.5      CIM_GET_QUALIFIER_RESPONSE_MESSAGE,
449 carolann.graves 1.64     CIM_SET_QUALIFIER_RESPONSE_MESSAGE,  // 60
450 mike            1.5      CIM_DELETE_QUALIFIER_RESPONSE_MESSAGE,
451                          CIM_ENUMERATE_QUALIFIERS_RESPONSE_MESSAGE,
452                          CIM_INVOKE_METHOD_RESPONSE_MESSAGE,
453 mike            1.6      CIM_ENABLE_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE,
454                          CIM_MODIFY_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE,
455                          CIM_DISABLE_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE,
456 kumpf           1.15     CIM_PROCESS_INDICATION_RESPONSE_MESSAGE,
457 carolann.graves 1.64     CIM_NOTIFY_PROVIDER_REGISTRATION_RESPONSE_MESSAGE,
458 kumpf           1.15     CIM_NOTIFY_PROVIDER_TERMINATION_RESPONSE_MESSAGE,
459 carolann.graves 1.64     CIM_HANDLE_INDICATION_RESPONSE_MESSAGE,  // 70
460 mike            1.6  
461 chip            1.25     // new
462                          CIM_CREATE_SUBSCRIPTION_RESPONSE_MESSAGE,
463                          CIM_MODIFY_SUBSCRIPTION_RESPONSE_MESSAGE,
464                          CIM_DELETE_SUBSCRIPTION_RESPONSE_MESSAGE,
465 kumpf           1.29 
466                          // new
467                          CIM_DISABLE_MODULE_RESPONSE_MESSAGE,
468                          CIM_ENABLE_MODULE_RESPONSE_MESSAGE,
469 kumpf           1.35 
470 carolann.graves 1.64     CIM_STOP_ALL_PROVIDERS_RESPONSE_MESSAGE,
471 chip            1.24 
472 mike            1.6      // Monitor-related messages:
473                      
474                          SOCKET_MESSAGE,
475                      
476                          // Connection-oriented messages:
477                      
478                          CLOSE_CONNECTION_MESSAGE,
479                      
480                          // HTTP messages:
481                      
482                          HTTP_MESSAGE,
483 carolann.graves 1.64     HTTP_ERROR_MESSAGE,  // 80
484 kumpf           1.28 
485                          // Exception messages to be passed to a CIM client application:
486                      
487                          CLIENT_EXCEPTION_MESSAGE,
488 mike            1.5  
489 mday            1.33     ASYNC_REGISTER_CIM_SERVICE,
490                          ASYNC_DEREGISTER_CIM_SERVICE,
491                          ASYNC_UPDATE_CIM_SERVICE,
492                          ASYNC_IOCTL,
493 carolann.graves 1.64     ASYNC_CIMSERVICE_START,
494 mday            1.33     ASYNC_CIMSERVICE_STOP,
495                          ASYNC_CIMSERVICE_PAUSE,
496                          ASYNC_CIMSERVICE_RESUME,
497                      
498 carolann.graves 1.64     ASYNC_ASYNC_OP_START,  // 90
499 mday            1.33     ASYNC_ASYNC_OP_RESULT,
500                          ASYNC_ASYNC_LEGACY_OP_START,
501 chip            1.34     ASYNC_ASYNC_LEGACY_OP_RESULT,
502                      
503 mday            1.33     ASYNC_FIND_SERVICE_Q,
504                          ASYNC_FIND_SERVICE_Q_RESULT,
505 carolann.graves 1.64     ASYNC_ENUMERATE_SERVICE,
506 mday            1.33     ASYNC_ENUMERATE_SERVICE_RESULT,
507 chip            1.34 
508 mday            1.33     ASYNC_REGISTERED_MODULE,
509                          ASYNC_DEREGISTERED_MODULE,
510 carolann.graves 1.64     ASYNC_FIND_MODULE_IN_SERVICE,  // 100
511 mday            1.33     ASYNC_FIND_MODULE_IN_SERVICE_RESPONSE,
512 chip            1.34 
513 mday            1.33     ASYNC_ASYNC_MODULE_OP_START,
514                          ASYNC_ASYNC_MODULE_OP_RESULT,
515                      
516 kumpf           1.53     CIM_NOTIFY_PROVIDER_ENABLE_REQUEST_MESSAGE,
517                          CIM_NOTIFY_PROVIDER_ENABLE_RESPONSE_MESSAGE,
518                      
519                          CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE,
520 w.white         1.52     CIM_INITIALIZE_PROVIDER_RESPONSE_MESSAGE,
521                      
522 kumpf           1.53     CIM_INITIALIZE_PROVIDER_AGENT_REQUEST_MESSAGE,
523                          CIM_INITIALIZE_PROVIDER_AGENT_RESPONSE_MESSAGE,
524 kumpf           1.47 
525 kumpf           1.54     CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE,
526                          CIM_NOTIFY_CONFIG_CHANGE_RESPONSE_MESSAGE,
527                      
528 carolann.graves 1.64     CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE,
529                          CIM_SUBSCRIPTION_INIT_COMPLETE_RESPONSE_MESSAGE,
530                      
531 mike            1.5      NUMBER_OF_MESSAGES
532                      };
533                      
534                      PEGASUS_COMMON_LINKAGE const char* MessageTypeToString(Uint32 messageType);
535 mike            1.6  
536                      /** This class implements a stack of queue-ids. Many messages must keep a
537                          stack of queue-ids of queues which they must be returned to. This provides
538                          a light efficient stack for this purpose.
539                      */
540 karl            1.60 class PEGASUS_COMMON_LINKAGE QueueIdStack
541 mike            1.6  {
542                      public:
543                      
544 chip            1.24     QueueIdStack() : _size(0)
545                          {
546 mike            1.6      }
547                      
548 karl            1.59     QueueIdStack(const QueueIdStack& x);
549 mike            1.6  
550 karl            1.59     PEGASUS_EXPLICIT QueueIdStack(Uint32 x);
551 mike            1.6  
552 karl            1.59     PEGASUS_EXPLICIT QueueIdStack(Uint32 x1, Uint32 x2);
553 mike            1.6  
554 chip            1.24     ~QueueIdStack()
555                          {
556 mike            1.6      }
557                      
558 karl            1.59     QueueIdStack& operator=(const QueueIdStack& x);
559 mike            1.6  
560 chip            1.24     Uint32 size() const
561                          {
562                      	return _size;
563 mike            1.6      }
564                      
565 chip            1.24     Boolean isEmpty() const
566                          {
567                      	return _size == 0;
568 mike            1.6      }
569                      
570 chip            1.24     void push(Uint32 x)
571 mike            1.6      {
572 karl            1.59 #ifdef PEGASUS_DEBUG
573 mike            1.6  	if (_size == MAX_SIZE)
574                      	    throw StackOverflow();
575 karl            1.59 #endif
576 mike            1.6  	_items[_size++] = x;
577                          }
578                      
579                          Uint32& top()
580                          {
581 karl            1.59 #ifdef PEGASUS_DEBUG
582 mike            1.6  	if (_size == 0)
583                      	    throw StackUnderflow();
584 karl            1.59 #endif
585 mike            1.6  	return _items[_size-1];
586                          }
587                      
588 chip            1.24     Uint32 top() const
589 mike            1.6      {
590 chip            1.24 	return ((QueueIdStack*)this)->top();
591 mike            1.6      }
592                      
593 chip            1.24     void pop()
594 mike            1.6      {
595 karl            1.59 #ifdef PEGASUS_DEBUG
596 mike            1.6  	if (_size == 0)
597                      	    throw StackUnderflow();
598 karl            1.59 #endif
599 mike            1.6  	_size--;
600                          }
601                      
602                          /** Make a copy of this stack and then pop the top element. */
603 karl            1.59     QueueIdStack copyAndPop() const;
604 mike            1.6  
605                      private:
606                      
607                          // Copy the given stack but then pop the top element:
608 karl            1.59     QueueIdStack(const QueueIdStack& x, int);
609 mike            1.6  
610                          enum { MAX_SIZE = 5 };
611                          Uint32 _items[MAX_SIZE];
612                          Uint32 _size;
613                      };
614 mike            1.4  
615                      PEGASUS_NAMESPACE_END
616                      
617                      #endif /* Pegasus_Message_h */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2