version 1.13, 2001/12/27 21:20:53
|
version 1.27, 2002/04/11 21:51:38
|
|
|
// Author: Mike Brasher (mbrasher@bmc.com) | // Author: Mike Brasher (mbrasher@bmc.com) |
// | // |
// Modified By: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com) | // Modified By: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com) |
// Modified By: Carol Ann Krug Graves, Hewlett-Packard Company |
// Carol Ann Krug Graves, Hewlett-Packard Company |
// (carolann_graves@hp.com) | // (carolann_graves@hp.com) |
// Modified By: Mike Day (mdday@us.ibm.com) |
// Mike Day (mdday@us.ibm.com) |
|
// Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
|
|
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
// REVIEW: could class be renamed to MessageMask (coding standard)? |
// REVIEW: could class be renamed to MessageMask (coding standard) |
| |
class PEGASUS_COMMON_LINKAGE message_mask | class PEGASUS_COMMON_LINKAGE message_mask |
{ | { |
|
|
static Uint32 type_socket; | static Uint32 type_socket; |
static Uint32 type_connection; | static Uint32 type_connection; |
static Uint32 type_http; | static Uint32 type_http; |
|
static Uint32 type_http_error; |
static Uint32 type_cimom; | static Uint32 type_cimom; |
static Uint32 type_control; | static Uint32 type_control; |
static Uint32 type_service; | static Uint32 type_service; |
|
|
static Uint32 ha_reply; | static Uint32 ha_reply; |
static Uint32 ha_synchronous; | static Uint32 ha_synchronous; |
static Uint32 ha_async; | static Uint32 ha_async; |
|
static Uint32 ha_wait; |
| |
| |
// more for documentation than for use | // more for documentation than for use |
|
|
} | } |
}; | }; |
| |
|
class cimom; |
class MessageQueue; | class MessageQueue; |
|
class MessageQueueService; |
|
class AsyncLegacyOperationStart; |
|
class AsyncLegacyOperationResult; |
| |
/** The Message class and derived classes are used to pass messages between | /** The Message class and derived classes are used to pass messages between |
modules. Messages are passed between modules using the message queues | modules. Messages are passed between modules using the message queues |
|
|
| |
Message( | Message( |
Uint32 type, | Uint32 type, |
|
Uint32 destination = 0, |
Uint32 key = getNextKey(), | Uint32 key = getNextKey(), |
Uint32 routing_code = 0, | Uint32 routing_code = 0, |
Uint32 mask = message_mask::type_legacy) | Uint32 mask = message_mask::type_legacy) |
|
|
_routing_code(routing_code), | _routing_code(routing_code), |
_mask(mask), | _mask(mask), |
_next(0), | _next(0), |
_prev(0) |
_prev(0), |
|
_async(0), |
|
dest(destination) |
{ | { |
| |
} | } |
| |
|
Message(Message & msg) |
|
{ |
|
if( this != &msg) |
|
{ |
|
_type = msg._type; |
|
_key = msg._key; |
|
_routing_code = msg._routing_code; |
|
_mask = msg._mask; |
|
_next = _prev = _async = 0; |
|
dest = msg.dest; |
|
} |
|
} |
|
|
|
|
virtual ~Message(); | virtual ~Message(); |
| |
Uint32 getType() const { return _type; } | Uint32 getType() const { return _type; } |
|
|
| |
// << Thu Dec 27 10:46:04 2001 mdd >> for use with DQueue container | // << Thu Dec 27 10:46:04 2001 mdd >> for use with DQueue container |
// as used by AsyncOpNode | // as used by AsyncOpNode |
Boolean operator == (void *msg ) |
Boolean operator == (const void *msg ) |
{ | { |
if( this == reinterpret_cast<Message *>(msg) ) |
if (reinterpret_cast<void *>(this) == msg ) |
return true; |
|
if( _key == (reinterpret_cast<Message *>(msg))->_key ) |
|
if(_type == (reinterpret_cast<Message *>(msg))->_type ) |
|
if(_mask == (reinterpret_cast<Message *>(msg))->_mask ) |
|
return true; | return true; |
return false; | return false; |
} | } |
| |
|
Message *get_async(void) |
|
{ |
|
Message *ret = _async; |
|
_async = 0; |
|
return ret; |
|
|
|
} |
|
|
|
void put_async(Message * msg) |
|
{ |
|
_async = msg; |
|
} |
|
|
| |
private: | private: |
Uint32 _type; | Uint32 _type; |
|
|
Uint32 _mask; | Uint32 _mask; |
Message* _next; | Message* _next; |
Message* _prev; | Message* _prev; |
|
protected: |
|
Message *_async; |
|
public: |
|
Uint32 dest; |
|
|
|
private: |
MessageQueue* _owner; | MessageQueue* _owner; |
static Uint32 _nextKey; | static Uint32 _nextKey; |
static Mutex _mut; | static Mutex _mut; |
|
friend class cimom; |
friend class MessageQueue; | friend class MessageQueue; |
|
friend class MessageQueueService; |
|
friend class AsyncLegacyOperationStart; |
|
friend class AsyncLegacyOperationResult; |
|
|
}; | }; |
| |
| |
|
|
CIM_ENABLE_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE, | CIM_ENABLE_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE, |
CIM_MODIFY_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE, | CIM_MODIFY_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE, |
CIM_DISABLE_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE, | CIM_DISABLE_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE, |
|
CIM_PROCESS_INDICATION_REQUEST_MESSAGE, |
|
CIM_HANDLE_INDICATION_REQUEST_MESSAGE, |
|
CIM_NOTIFY_PROVIDER_REGISTRATION_REQUEST_MESSAGE, |
|
CIM_NOTIFY_PROVIDER_TERMINATION_REQUEST_MESSAGE, |
|
|
|
// new |
|
CIM_ENABLE_INDICATIONS_REQUEST_MESSAGE, |
|
CIM_DISABLE_INDICATIONS_REQUEST_MESSAGE, |
|
CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE, |
|
CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE, |
|
CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE, |
|
|
CIM_GET_CLASS_RESPONSE_MESSAGE, | CIM_GET_CLASS_RESPONSE_MESSAGE, |
CIM_GET_INSTANCE_RESPONSE_MESSAGE, | CIM_GET_INSTANCE_RESPONSE_MESSAGE, |
CIM_EXPORT_INDICATION_RESPONSE_MESSAGE, | CIM_EXPORT_INDICATION_RESPONSE_MESSAGE, |
|
|
CIM_ENABLE_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE, | CIM_ENABLE_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE, |
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_NOTIFY_PROVIDER_REGISTRATION_RESPONSE_MESSAGE, |
|
CIM_NOTIFY_PROVIDER_TERMINATION_RESPONSE_MESSAGE, |
|
CIM_HANDLE_INDICATION_RESPONSE_MESSAGE, |
|
|
|
// new |
|
CIM_ENABLE_INDICATIONS_RESPONSE_MESSAGE, |
|
CIM_DISABLE_INDICATIONS_RESPONSE_MESSAGE, |
|
CIM_CREATE_SUBSCRIPTION_RESPONSE_MESSAGE, |
|
CIM_MODIFY_SUBSCRIPTION_RESPONSE_MESSAGE, |
|
CIM_DELETE_SUBSCRIPTION_RESPONSE_MESSAGE, |
| |
// Monitor-related messages: | // Monitor-related messages: |
| |
|
|
// HTTP messages: | // HTTP messages: |
| |
HTTP_MESSAGE, | HTTP_MESSAGE, |
|
HTTP_ERROR_MESSAGE, |
| |
NUMBER_OF_MESSAGES | NUMBER_OF_MESSAGES |
}; | }; |