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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2