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

Diff for /pegasus/src/Pegasus/Common/Message.h between version 1.50 and 1.64

version 1.50, 2004/05/21 22:01:52 version 1.64, 2005/02/25 21:44:16
Line 1 
Line 1 
 //%2003////////////////////////////////////////////////////////////////////////  //%2005////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002  BMC Software, Hewlett-Packard Development  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 // Company, L. P., IBM Corp., The Open Group, Tivoli Systems.  // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.; // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.;
 // IBM Corp.; EMC Corporation, The Open Group. // IBM Corp.; EMC Corporation, The Open Group.
   // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; VERITAS Software Corporation; The Open Group.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
Line 31 
Line 35 
 //              Mike Day (mdday@us.ibm.com) //              Mike Day (mdday@us.ibm.com)
 //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) //              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
 //              Arthur Pichlkostner (via Markus: sedgewick_de@yahoo.de) //              Arthur Pichlkostner (via Markus: sedgewick_de@yahoo.de)
   //                              Willis White (whiwill@us.ibm.com) PEP 127 and 128
   //         Brian G. Campbell, EMC (campbell_brian@emc.com) - PEP140/phase1
   //              Amit K Arora, IBM (amita@in.ibm.com) for Bug#1090
   //
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 44 
Line 52 
 #include <Pegasus/Common/IPC.h> #include <Pegasus/Common/IPC.h>
 #include <Pegasus/Common/StatisticalData.h> #include <Pegasus/Common/StatisticalData.h>
 #include <Pegasus/Common/Linkage.h> #include <Pegasus/Common/Linkage.h>
   #include <Pegasus/Common/CIMDateTime.h>
   #include <Pegasus/Common/CIMOperationType.h>
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
Line 132 
Line 142 
          _next(0),          _next(0),
          _prev(0),          _prev(0),
          _async(0),          _async(0),
          dest(destination)           dest(destination),
            _isComplete(true),
            _index(0)
       {       {
  
       }       }
Line 149 
Line 161 
             _next = _prev = _async = 0;             _next = _prev = _async = 0;
             dest = msg.dest;             dest = msg.dest;
             _httpMethod = msg._httpMethod;             _httpMethod = msg._httpMethod;
                           _index = msg._index;
                           _isComplete = msg._isComplete;
  
          }          }
          return *this;          return *this;
Line 176 
Line 190 
  
       void setHttpMethod(HttpMethod httpMethod) {_httpMethod = httpMethod;}       void setHttpMethod(HttpMethod httpMethod) {_httpMethod = httpMethod;}
  
 #ifdef PEGASUS_HAS_PERFINST  
   #ifndef PEGASUS_DISABLE_PERFINST
 // //
 // Needed for performance measurement // Needed for performance measurement
 // //
Line 189 
Line 204 
  
       void endProvider();       void endProvider();
  
       timeval getStartServerTime() const { return _timeServerStart; }        CIMDateTime getStartServerTime() const { return _timeServerStart; }
  
       void setStartServerTime(timeval timeServerStart)        void setStartServerTime(CIMDateTime timeServerStart)
       {       {
            _timeServerStart = timeServerStart;            _timeServerStart = timeServerStart;
       }       }
  
       timeval getStartProviderTime() const { return _timeProviderStart; }        CIMDateTime getStartProviderTime() const { return _timeProviderStart; }
  
       void setStartProviderTime(timeval timeProviderStart)        void setStartProviderTime(CIMDateTime timeProviderStart)
       {       {
           _timeProviderStart = timeProviderStart;           _timeProviderStart = timeProviderStart;
       }       }
  
       timeval getEndServerTime() const { return _timeServerEnd; }        CIMDateTime getEndServerTime() const { return _timeServerEnd; }
  
       void setEndServerTime (timeval timeServerEnd)        void setEndServerTime (CIMDateTime timeServerEnd)
       {       {
           _timeServerEnd = timeServerEnd;           _timeServerEnd = timeServerEnd;
       }       }
  
       timeval getEndProviderTime() const { return _timeProviderEnd; }        CIMDateTime getEndProviderTime() const { return _timeProviderEnd; }
  
       void setEndProviderTime(timeval timeProviderEnd)        void setEndProviderTime(CIMDateTime timeProviderEnd)
       {       {
           _timeProviderEnd = timeProviderEnd;           _timeProviderEnd = timeProviderEnd;
       }       }
  
       Uint32 getTotalTime() { return _totalTime; }            CIMDateTime getProviderTime() { return _providerTime;}
   
         CIMDateTime getTotalTime() { return _totalTime; }
   
             CIMDateTime getServerTime() { return _serverTime; }
 // //
 #endif #endif
  
Line 231 
Line 250 
  
       static Uint32 getNextKey()       static Uint32 getNextKey()
       {       {
             AutoMutex autoMut(_mut);
          _mut.lock( pegasus_thread_self() ) ;  
          Uint32 ret = _nextKey++;          Uint32 ret = _nextKey++;
          _mut.unlock();  
          return ret;          return ret;
       }       }
  
         static CIMOperationType convertMessageTypetoCIMOpType(const Uint32 type)
         {
             Uint32 in_type, enum_type;
             CIMOperationType cT;
   
   
             in_type = type%38;      /* groups request/response message by type ie. getClassRequestMessage
                                   (type = 1) gives the same result as getClassResponseMessage (type = 39)*/
   
             if (in_type < 3) {
                enum_type = in_type;
                }
             else if((3 < in_type) && (in_type < 25)){
                enum_type = in_type -1;
                }
            else if (in_type == 25) {
               enum_type = 0;
               }
            else{
               return ((CIMOperationType)40); //error condition
               }
   
           cT = (CIMOperationType)enum_type;
           return cT;
           }
   
   
       virtual void print(       virtual void print(
           PEGASUS_STD(ostream)& os,           PEGASUS_STD(ostream)& os,
           Boolean printHeader = true) const;           Boolean printHeader = true) const;
Line 285 
Line 329 
          _routing_code = req->_routing_code;          _routing_code = req->_routing_code;
       }       }
  
                           // set the message index indicating what piece (or sequence) this is
                           // message indexes start at zero
                           void setIndex(Uint32 index) { _index = index; }
   
                           // increment the message index
                           void incrementIndex() { _index++; }
   
                           // set the complete flag indicating if this message piece is the
                           // last or not
                           void setComplete(Boolean isComplete)
                                   { _isComplete = isComplete ? true:false; }
   
                           // get the message index (or sequence number)
                           Uint32 getIndex() const { return _index; }
   
                           // is this the first piece of the message ?
                           Boolean isFirst() const { return _index == 0 ? true : false; }
   
                           // is this message complete? (i.e the last in a one or more sequence)
                           Boolean isComplete() const { return _isComplete; }
  
    private:    private:
       Uint32 _type;       Uint32 _type;
Line 293 
Line 357 
       Uint32 _mask;       Uint32 _mask;
       HttpMethod _httpMethod;       HttpMethod _httpMethod;
 // Needed for performance measurement // Needed for performance measurement
       timeval _timeServerStart;        CIMDateTime _timeServerStart;
       timeval _timeServerEnd;        CIMDateTime _timeServerEnd;
       timeval _timeProviderStart;        CIMDateTime _timeProviderStart;
       timeval _timeProviderEnd;        CIMDateTime _timeProviderEnd;
       Uint64 _totalTime;            CIMDateTime _providerTime;
             CIMDateTime _serverTime;
         CIMDateTime _totalTime;
 // //
  
       // << Tue Jul  1 11:02:35 2003 mdd >> pep_88 and helper for i18n and l10n       // << Tue Jul  1 11:02:35 2003 mdd >> pep_88 and helper for i18n and l10n
Line 311 
Line 377 
    public:    public:
       Message *_async;       Message *_async;
       Uint32 dest;       Uint32 dest;
             //needed for PEP 128 - transmitting Server Response Time to Client
         Uint64 totServerTime;
   
    private:    private:
       MessageQueue* _owner;       MessageQueue* _owner;
         Boolean _isComplete;
         Uint32 _index;
       static Uint32 _nextKey;       static Uint32 _nextKey;
       static Mutex _mut;       static Mutex _mut;
  
Line 367 
Line 438 
     CIM_NOTIFY_PROVIDER_TERMINATION_REQUEST_MESSAGE,     CIM_NOTIFY_PROVIDER_TERMINATION_REQUEST_MESSAGE,
  
     // new     // new
     CIM_ENABLE_INDICATIONS_REQUEST_MESSAGE,  
     CIM_DISABLE_INDICATIONS_REQUEST_MESSAGE,  
     CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE,     CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE,
     CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE,     CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE,
     CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE,     CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE,
Line 377 
Line 446 
     CIM_DISABLE_MODULE_REQUEST_MESSAGE,     CIM_DISABLE_MODULE_REQUEST_MESSAGE,
     CIM_ENABLE_MODULE_REQUEST_MESSAGE,     CIM_ENABLE_MODULE_REQUEST_MESSAGE,
  
     CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE,  // 40      CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE,
  
     CIM_GET_CLASS_RESPONSE_MESSAGE,     CIM_GET_CLASS_RESPONSE_MESSAGE,
     CIM_GET_INSTANCE_RESPONSE_MESSAGE,      CIM_GET_INSTANCE_RESPONSE_MESSAGE,  // 40
     CIM_EXPORT_INDICATION_RESPONSE_MESSAGE,     CIM_EXPORT_INDICATION_RESPONSE_MESSAGE,
     CIM_DELETE_CLASS_RESPONSE_MESSAGE,     CIM_DELETE_CLASS_RESPONSE_MESSAGE,
     CIM_DELETE_INSTANCE_RESPONSE_MESSAGE,     CIM_DELETE_INSTANCE_RESPONSE_MESSAGE,
Line 388 
Line 457 
     CIM_CREATE_INSTANCE_RESPONSE_MESSAGE,     CIM_CREATE_INSTANCE_RESPONSE_MESSAGE,
     CIM_MODIFY_CLASS_RESPONSE_MESSAGE,     CIM_MODIFY_CLASS_RESPONSE_MESSAGE,
     CIM_MODIFY_INSTANCE_RESPONSE_MESSAGE,     CIM_MODIFY_INSTANCE_RESPONSE_MESSAGE,
     CIM_ENUMERATE_CLASSES_RESPONSE_MESSAGE,  // 50      CIM_ENUMERATE_CLASSES_RESPONSE_MESSAGE,
     CIM_ENUMERATE_CLASS_NAMES_RESPONSE_MESSAGE,     CIM_ENUMERATE_CLASS_NAMES_RESPONSE_MESSAGE,
     CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE,      CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE,  // 50
     CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE,     CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE,
     CIM_EXEC_QUERY_RESPONSE_MESSAGE,     CIM_EXEC_QUERY_RESPONSE_MESSAGE,
     CIM_ASSOCIATORS_RESPONSE_MESSAGE,     CIM_ASSOCIATORS_RESPONSE_MESSAGE,
Line 398 
Line 467 
     CIM_REFERENCES_RESPONSE_MESSAGE,     CIM_REFERENCES_RESPONSE_MESSAGE,
     CIM_REFERENCE_NAMES_RESPONSE_MESSAGE,     CIM_REFERENCE_NAMES_RESPONSE_MESSAGE,
     CIM_GET_PROPERTY_RESPONSE_MESSAGE,     CIM_GET_PROPERTY_RESPONSE_MESSAGE,
     CIM_SET_PROPERTY_RESPONSE_MESSAGE,  // 60      CIM_SET_PROPERTY_RESPONSE_MESSAGE,
     CIM_GET_QUALIFIER_RESPONSE_MESSAGE,     CIM_GET_QUALIFIER_RESPONSE_MESSAGE,
     CIM_SET_QUALIFIER_RESPONSE_MESSAGE,      CIM_SET_QUALIFIER_RESPONSE_MESSAGE,  // 60
     CIM_DELETE_QUALIFIER_RESPONSE_MESSAGE,     CIM_DELETE_QUALIFIER_RESPONSE_MESSAGE,
     CIM_ENUMERATE_QUALIFIERS_RESPONSE_MESSAGE,     CIM_ENUMERATE_QUALIFIERS_RESPONSE_MESSAGE,
     CIM_INVOKE_METHOD_RESPONSE_MESSAGE,     CIM_INVOKE_METHOD_RESPONSE_MESSAGE,
Line 408 
Line 477 
     CIM_MODIFY_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE,     CIM_MODIFY_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE,
     CIM_DISABLE_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE,     CIM_DISABLE_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE,
     CIM_PROCESS_INDICATION_RESPONSE_MESSAGE,     CIM_PROCESS_INDICATION_RESPONSE_MESSAGE,
     CIM_NOTIFY_PROVIDER_REGISTRATION_RESPONSE_MESSAGE,  // 70      CIM_NOTIFY_PROVIDER_REGISTRATION_RESPONSE_MESSAGE,
     CIM_NOTIFY_PROVIDER_TERMINATION_RESPONSE_MESSAGE,     CIM_NOTIFY_PROVIDER_TERMINATION_RESPONSE_MESSAGE,
     CIM_HANDLE_INDICATION_RESPONSE_MESSAGE,      CIM_HANDLE_INDICATION_RESPONSE_MESSAGE,  // 70
  
     // new     // new
     CIM_ENABLE_INDICATIONS_RESPONSE_MESSAGE,  
     CIM_DISABLE_INDICATIONS_RESPONSE_MESSAGE,  
     CIM_CREATE_SUBSCRIPTION_RESPONSE_MESSAGE,     CIM_CREATE_SUBSCRIPTION_RESPONSE_MESSAGE,
     CIM_MODIFY_SUBSCRIPTION_RESPONSE_MESSAGE,     CIM_MODIFY_SUBSCRIPTION_RESPONSE_MESSAGE,
     CIM_DELETE_SUBSCRIPTION_RESPONSE_MESSAGE,     CIM_DELETE_SUBSCRIPTION_RESPONSE_MESSAGE,
Line 423 
Line 490 
     CIM_DISABLE_MODULE_RESPONSE_MESSAGE,     CIM_DISABLE_MODULE_RESPONSE_MESSAGE,
     CIM_ENABLE_MODULE_RESPONSE_MESSAGE,     CIM_ENABLE_MODULE_RESPONSE_MESSAGE,
  
     CIM_STOP_ALL_PROVIDERS_RESPONSE_MESSAGE,  // 80      CIM_STOP_ALL_PROVIDERS_RESPONSE_MESSAGE,
  
     // Monitor-related messages:     // Monitor-related messages:
  
Line 436 
Line 503 
     // HTTP messages:     // HTTP messages:
  
     HTTP_MESSAGE,     HTTP_MESSAGE,
     HTTP_ERROR_MESSAGE,      HTTP_ERROR_MESSAGE,  // 80
  
     // Exception messages to be passed to a CIM client application:     // Exception messages to be passed to a CIM client application:
  
Line 446 
Line 513 
     ASYNC_DEREGISTER_CIM_SERVICE,     ASYNC_DEREGISTER_CIM_SERVICE,
     ASYNC_UPDATE_CIM_SERVICE,     ASYNC_UPDATE_CIM_SERVICE,
     ASYNC_IOCTL,     ASYNC_IOCTL,
     ASYNC_CIMSERVICE_START,  // 90      ASYNC_CIMSERVICE_START,
     ASYNC_CIMSERVICE_STOP,     ASYNC_CIMSERVICE_STOP,
     ASYNC_CIMSERVICE_PAUSE,     ASYNC_CIMSERVICE_PAUSE,
     ASYNC_CIMSERVICE_RESUME,     ASYNC_CIMSERVICE_RESUME,
  
     ASYNC_ASYNC_OP_START,      ASYNC_ASYNC_OP_START,  // 90
     ASYNC_ASYNC_OP_RESULT,     ASYNC_ASYNC_OP_RESULT,
     ASYNC_ASYNC_LEGACY_OP_START,     ASYNC_ASYNC_LEGACY_OP_START,
     ASYNC_ASYNC_LEGACY_OP_RESULT,     ASYNC_ASYNC_LEGACY_OP_RESULT,
  
     ASYNC_FIND_SERVICE_Q,     ASYNC_FIND_SERVICE_Q,
     ASYNC_FIND_SERVICE_Q_RESULT,     ASYNC_FIND_SERVICE_Q_RESULT,
     ASYNC_ENUMERATE_SERVICE,  // 100      ASYNC_ENUMERATE_SERVICE,
     ASYNC_ENUMERATE_SERVICE_RESULT,     ASYNC_ENUMERATE_SERVICE_RESULT,
  
     ASYNC_REGISTERED_MODULE,     ASYNC_REGISTERED_MODULE,
     ASYNC_DEREGISTERED_MODULE,     ASYNC_DEREGISTERED_MODULE,
     ASYNC_FIND_MODULE_IN_SERVICE,      ASYNC_FIND_MODULE_IN_SERVICE,  // 100
     ASYNC_FIND_MODULE_IN_SERVICE_RESPONSE,     ASYNC_FIND_MODULE_IN_SERVICE_RESPONSE,
  
     ASYNC_ASYNC_MODULE_OP_START,     ASYNC_ASYNC_MODULE_OP_START,
     ASYNC_ASYNC_MODULE_OP_RESULT,     ASYNC_ASYNC_MODULE_OP_RESULT,
     // for indication consumers  
   
     CIM_CONSUME_INDICATION_REQUEST_MESSAGE,  
     CIM_CONSUME_INDICATION_RESPONSE_MESSAGE,  
  
     CIM_NOTIFY_PROVIDER_ENABLE_REQUEST_MESSAGE,     CIM_NOTIFY_PROVIDER_ENABLE_REQUEST_MESSAGE,
     CIM_NOTIFY_PROVIDER_ENABLE_RESPONSE_MESSAGE,     CIM_NOTIFY_PROVIDER_ENABLE_RESPONSE_MESSAGE,
Line 479 
Line 542 
     CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE,     CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE,
     CIM_INITIALIZE_PROVIDER_RESPONSE_MESSAGE,     CIM_INITIALIZE_PROVIDER_RESPONSE_MESSAGE,
  
       CIM_INITIALIZE_PROVIDER_AGENT_REQUEST_MESSAGE,
       CIM_INITIALIZE_PROVIDER_AGENT_RESPONSE_MESSAGE,
   
       CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE,
       CIM_NOTIFY_CONFIG_CHANGE_RESPONSE_MESSAGE,
   
       CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE,
       CIM_SUBSCRIPTION_INIT_COMPLETE_RESPONSE_MESSAGE,
   
     NUMBER_OF_MESSAGES     NUMBER_OF_MESSAGES
 }; };
  
Line 488 
Line 560 
     stack of queue-ids of queues which they must be returned to. This provides     stack of queue-ids of queues which they must be returned to. This provides
     a light efficient stack for this purpose.     a light efficient stack for this purpose.
 */ */
 class QueueIdStack  class PEGASUS_COMMON_LINKAGE QueueIdStack
 { {
 public: public:
  
Line 496 
Line 568 
     {     {
     }     }
  
     QueueIdStack(const QueueIdStack& x) : _size(x._size)      QueueIdStack(const QueueIdStack& x);
     {  
         memcpy(_items, x._items, sizeof(_items));  
     }  
  
     PEGASUS_EXPLICIT QueueIdStack(Uint32 x) : _size(0)      PEGASUS_EXPLICIT QueueIdStack(Uint32 x);
     {  
         push(x);  
     }  
  
     PEGASUS_EXPLICIT QueueIdStack(Uint32 x1, Uint32 x2) : _size(0)      PEGASUS_EXPLICIT QueueIdStack(Uint32 x1, Uint32 x2);
     {  
         push(x1);  
         push(x2);  
     }  
  
     ~QueueIdStack()     ~QueueIdStack()
     {     {
     }     }
  
     QueueIdStack& operator=(const QueueIdStack& x)      QueueIdStack& operator=(const QueueIdStack& x);
     {  
         if (this != &x)  
         {  
             memcpy(_items, x._items, sizeof(_items));  
             _size = x._size;  
         }  
         return *this;  
     }  
  
     Uint32 size() const     Uint32 size() const
     {     {
Line 538 
Line 592 
  
     void push(Uint32 x)     void push(Uint32 x)
     {     {
   #ifdef PEGASUS_DEBUG
         if (_size == MAX_SIZE)         if (_size == MAX_SIZE)
             throw StackOverflow();             throw StackOverflow();
   #endif
         _items[_size++] = x;         _items[_size++] = x;
     }     }
  
     Uint32& top()     Uint32& top()
     {     {
   #ifdef PEGASUS_DEBUG
         if (_size == 0)         if (_size == 0)
             throw StackUnderflow();             throw StackUnderflow();
   #endif
         return _items[_size-1];         return _items[_size-1];
     }     }
  
Line 559 
Line 615 
  
     void pop()     void pop()
     {     {
   #ifdef PEGASUS_DEBUG
         if (_size == 0)         if (_size == 0)
             throw StackUnderflow();             throw StackUnderflow();
   #endif
         _size--;         _size--;
     }     }
  
     /** Make a copy of this stack and then pop the top element. */     /** Make a copy of this stack and then pop the top element. */
     QueueIdStack copyAndPop() const      QueueIdStack copyAndPop() const;
     {  
         return QueueIdStack(*this, 0);  
     }  
  
 private: private:
  
     // Copy the given stack but then pop the top element:     // Copy the given stack but then pop the top element:
     QueueIdStack(const QueueIdStack& x, int) : _size(x._size)      QueueIdStack(const QueueIdStack& x, int);
     {  
         memcpy(_items, x._items, sizeof(_items));  
         pop();  
     }  
  
     enum { MAX_SIZE = 5 };     enum { MAX_SIZE = 5 };
     Uint32 _items[MAX_SIZE];     Uint32 _items[MAX_SIZE];


Legend:
Removed from v.1.50  
changed lines
  Added in v.1.64

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2