version 1.7, 2001/12/13 17:34:46
|
version 1.16, 2002/02/02 01:03:31
|
|
|
// 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 | // Modified By: Carol Ann Krug Graves, Hewlett-Packard Company |
// (carolann_graves@hp.com) | // (carolann_graves@hp.com) |
|
// Modified By: Mike Day (mdday@us.ibm.com) |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
|
|
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
// REVIEW: could class be renamed to MessageMask (coding standard)? |
|
|
class PEGASUS_COMMON_LINKAGE message_mask | class PEGASUS_COMMON_LINKAGE message_mask |
{ | { |
public: | public: |
|
|
static Uint32 type_legacy; | static Uint32 type_legacy; |
static Uint32 type_CIMClass; |
static Uint32 type_CIMOperation; |
static Uint32 type_CIMInstance; |
static Uint32 type_CIMAsyncOperation; |
static Uint32 type_CIMIndication; |
static Uint32 type_export; |
static Uint32 type_CIMQualifier; |
static Uint32 type_lifetime; |
static Uint32 type_CIMSubscription; |
|
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_cimom; | static Uint32 type_cimom; |
|
|
static Uint32 no_delete; |
|
|
|
static Uint32 type_request; |
|
static Uint32 type_reply; |
|
static Uint32 type_control; | static Uint32 type_control; |
|
static Uint32 type_service; |
|
static Uint32 type_broadcast; |
|
|
|
static Uint32 ha_no_delete; |
|
static Uint32 ha_request; |
|
static Uint32 ha_reply; |
|
static Uint32 ha_synchronous; |
|
static Uint32 ha_async; |
| |
// more for documentation than for use | // more for documentation than for use |
| |
inline Uint32 get_classification(Uint32 flags) |
inline Uint32 get_type(Uint32 flags) |
{ | { |
return (flags & 0x000fffff); | return (flags & 0x000fffff); |
} | } |
|
|
Message( | Message( |
Uint32 type, | Uint32 type, |
Uint32 key = getNextKey(), | Uint32 key = getNextKey(), |
|
Uint32 routing_code = 0, |
Uint32 mask = message_mask::type_legacy) | Uint32 mask = message_mask::type_legacy) |
: | : |
_type(type), | _type(type), |
_key(key), | _key(key), |
|
_routing_code(routing_code), |
_mask(mask), | _mask(mask), |
_next(0), | _next(0), |
_prev(0) | _prev(0) |
|
|
| |
void setKey(Uint32 key) { _key = key; } | void setKey(Uint32 key) { _key = key; } |
| |
|
Uint32 getRouting() const { return _routing_code; } |
|
void setRouting(Uint32 routing) { _routing_code = routing; } |
|
|
Uint32 getMask() const { return _mask; } | Uint32 getMask() const { return _mask; } |
| |
void setMask(Uint32 mask) { _mask = mask; } | void setMask(Uint32 mask) { _mask = mask; } |
|
|
| |
virtual void print(PEGASUS_STD(ostream)& os) const; | virtual void print(PEGASUS_STD(ostream)& os) const; |
| |
|
// << Thu Dec 27 10:46:04 2001 mdd >> for use with DQueue container |
|
// as used by AsyncOpNode |
|
Boolean operator == (void *msg ) |
|
{ |
|
if (reinterpret_cast<void *>(this) == msg ) |
|
return true; |
|
return false; |
|
} |
|
|
|
|
private: | private: |
Uint32 _type; | Uint32 _type; |
Uint32 _key; | Uint32 _key; |
|
Uint32 _routing_code; |
Uint32 _mask; | Uint32 _mask; |
Message* _next; | Message* _next; |
Message* _prev; | Message* _prev; |
|
|
}; | }; |
| |
| |
// each component needs to support a set of these messgaes and pass that array |
|
// to the dispatcher so the dispatcher can route messages at the first level |
|
// i.e., client will not accept request messages. |
|
// every message should have a response |
|
|
|
// dispatcher supports full cim api set (as below) |
|
// repository needs to be a peer to the provider manager |
|
// |
|
|
|
// mkdir _dispatcher |
|
// mkdir _providermanager |
|
// mkdir _server (http incoming, front end) |
|
// mkdir _repositorymanager |
|
// _subscriptionprocessor |
|
// _indicationprocessor |
|
// _configurationmanager |
|
// _cimom (loads and links everyone, hooks up queues) |
|
|
|
// fundamental messages: |
|
|
|
// start, stop, pause, resume |
|
// handshaking: interrogate (as in windows service api) |
|
// message class support |
|
// message namespace support ??? |
|
|
|
enum MessageType | enum MessageType |
{ | { |
DUMMY_MESSAGE, | DUMMY_MESSAGE, |
|
|
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_NOTIFY_PROVIDER_REGISTRATION_REQUEST_MESSAGE, |
|
CIM_NOTIFY_PROVIDER_TERMINATION_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, |
| |
// Monitor-related messages: | // Monitor-related messages: |
| |