version 1.21, 2002/02/18 15:25:34
|
version 1.38, 2002/07/26 20:01:19
|
|
|
//%///-*-c++-*-///////////////////////////////////////////////////////////////// |
//%///////////////////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001 BMC Software, Hewlett-Packard Company, IBM, |
// Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM, |
// The Open Group, Tivoli Systems | // The Open Group, Tivoli Systems |
// | // |
// 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 |
|
|
// 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) |
|
// Arthur Pichlkostner (via Markus: sedgewick_de@yahoo.de) |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
|
|
#include <cstring> | #include <cstring> |
#include <Pegasus/Common/Exception.h> | #include <Pegasus/Common/Exception.h> |
#include <Pegasus/Common/IPC.h> | #include <Pegasus/Common/IPC.h> |
|
#include <Pegasus/Common/StatisticalData.h> |
|
#include <Pegasus/Common/Linkage.h> |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
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 type_broadcast; | static Uint32 type_broadcast; |
|
static Uint32 type_client_exception; |
| |
static Uint32 ha_no_delete; | static Uint32 ha_no_delete; |
static Uint32 ha_request; | static Uint32 ha_request; |
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 |
| |
|
|
| |
} | } |
| |
|
Message & operator = ( const 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; |
|
} |
|
return *this; |
|
} |
|
|
|
|
virtual ~Message(); | virtual ~Message(); |
| |
Uint32 getType() const { return _type; } | Uint32 getType() const { return _type; } |
|
|
| |
void setMask(Uint32 mask) { _mask = mask; } | void setMask(Uint32 mask) { _mask = mask; } |
| |
|
#ifdef PEGASUS_HAS_PERFINST |
|
// |
|
// Needed for performance measurement |
|
// |
|
|
|
void startServer(); |
|
|
|
void endServer(); |
|
|
|
void startProvider(); |
|
|
|
void endProvider(); |
|
|
|
timeval getStartServerTime() const { return _timeServerStart; } |
|
|
|
void setStartServerTime(timeval timeServerStart) |
|
{ |
|
_timeServerStart = timeServerStart; |
|
} |
|
|
|
timeval getStartProviderTime() const { return _timeProviderStart; } |
|
|
|
void setStartProviderTime(timeval timeProviderStart) |
|
{ |
|
_timeProviderStart = timeProviderStart; |
|
} |
|
|
|
timeval getEndServerTime() const { return _timeServerEnd; } |
|
|
|
void setEndServerTime (timeval timeServerEnd) |
|
{ |
|
_timeServerEnd = timeServerEnd; |
|
} |
|
|
|
timeval getEndProviderTime() const { return _timeProviderEnd; } |
|
|
|
void setEndProviderTime(timeval timeProviderEnd) |
|
{ |
|
_timeProviderEnd = timeProviderEnd; |
|
} |
|
|
|
Uint32 getTotalTime() { return _totalTime; } |
|
// |
|
#endif |
|
|
Message* getNext() { return _next; } | Message* getNext() { return _next; } |
| |
const Message* getNext() const { return _next; } | const Message* getNext() const { return _next; } |
|
|
return ret; | return ret; |
} | } |
| |
virtual void print(PEGASUS_STD(ostream)& os) const; |
virtual void print( |
|
PEGASUS_STD(ostream)& os, |
|
Boolean printHeader = true) const; |
| |
// << 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 (reinterpret_cast<void *>(this) == msg ) | if (reinterpret_cast<void *>(this) == msg ) |
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 _key; | Uint32 _key; |
Uint32 _routing_code; | Uint32 _routing_code; |
Uint32 _mask; | Uint32 _mask; |
|
// Needed for performance measurement |
|
timeval _timeServerStart; |
|
timeval _timeServerEnd; |
|
timeval _timeProviderStart; |
|
timeval _timeProviderEnd; |
|
Uint64 _totalTime; |
|
// |
Message* _next; | Message* _next; |
Message* _prev; | Message* _prev; |
|
|
protected: | protected: |
Message *_async; |
|
public: | public: |
|
Message *_async; |
Uint32 dest; | Uint32 dest; |
|
|
private: | private: |
MessageQueue* _owner; | MessageQueue* _owner; |
static Uint32 _nextKey; | static Uint32 _nextKey; |
|
|
CIM_CREATE_INSTANCE_REQUEST_MESSAGE, | CIM_CREATE_INSTANCE_REQUEST_MESSAGE, |
CIM_MODIFY_CLASS_REQUEST_MESSAGE, | CIM_MODIFY_CLASS_REQUEST_MESSAGE, |
CIM_MODIFY_INSTANCE_REQUEST_MESSAGE, | CIM_MODIFY_INSTANCE_REQUEST_MESSAGE, |
CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE, |
CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE, //10 |
CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE, | CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE, |
CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE, | CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE, |
CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE, | CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE, |
|
|
CIM_REFERENCES_REQUEST_MESSAGE, | CIM_REFERENCES_REQUEST_MESSAGE, |
CIM_REFERENCE_NAMES_REQUEST_MESSAGE, | CIM_REFERENCE_NAMES_REQUEST_MESSAGE, |
CIM_GET_PROPERTY_REQUEST_MESSAGE, | CIM_GET_PROPERTY_REQUEST_MESSAGE, |
CIM_SET_PROPERTY_REQUEST_MESSAGE, |
CIM_SET_PROPERTY_REQUEST_MESSAGE, //20 |
CIM_GET_QUALIFIER_REQUEST_MESSAGE, | CIM_GET_QUALIFIER_REQUEST_MESSAGE, |
CIM_SET_QUALIFIER_REQUEST_MESSAGE, | CIM_SET_QUALIFIER_REQUEST_MESSAGE, |
CIM_DELETE_QUALIFIER_REQUEST_MESSAGE, | CIM_DELETE_QUALIFIER_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_PROCESS_INDICATION_REQUEST_MESSAGE, |
CIM_HANDLE_INDICATION_REQUEST_MESSAGE, |
CIM_HANDLE_INDICATION_REQUEST_MESSAGE, // 30 |
CIM_NOTIFY_PROVIDER_REGISTRATION_REQUEST_MESSAGE, | CIM_NOTIFY_PROVIDER_REGISTRATION_REQUEST_MESSAGE, |
CIM_NOTIFY_PROVIDER_TERMINATION_REQUEST_MESSAGE, | CIM_NOTIFY_PROVIDER_TERMINATION_REQUEST_MESSAGE, |
CIM_GET_CLASS_RESPONSE_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, |
|
|
|
// new |
|
CIM_DISABLE_MODULE_REQUEST_MESSAGE, |
|
CIM_ENABLE_MODULE_REQUEST_MESSAGE, |
|
|
|
CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE, |
|
|
|
CIM_GET_CLASS_RESPONSE_MESSAGE, // 40 |
CIM_GET_INSTANCE_RESPONSE_MESSAGE, | CIM_GET_INSTANCE_RESPONSE_MESSAGE, |
CIM_EXPORT_INDICATION_RESPONSE_MESSAGE, |
CIM_EXPORT_INDICATION_RESPONSE_MESSAGE, // 42 |
CIM_DELETE_CLASS_RESPONSE_MESSAGE, | CIM_DELETE_CLASS_RESPONSE_MESSAGE, |
CIM_DELETE_INSTANCE_RESPONSE_MESSAGE, | CIM_DELETE_INSTANCE_RESPONSE_MESSAGE, |
CIM_CREATE_CLASS_RESPONSE_MESSAGE, | CIM_CREATE_CLASS_RESPONSE_MESSAGE, |
|
|
CIM_NOTIFY_PROVIDER_TERMINATION_RESPONSE_MESSAGE, | CIM_NOTIFY_PROVIDER_TERMINATION_RESPONSE_MESSAGE, |
CIM_HANDLE_INDICATION_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, |
|
|
|
// new |
|
CIM_DISABLE_MODULE_RESPONSE_MESSAGE, |
|
CIM_ENABLE_MODULE_RESPONSE_MESSAGE, |
|
|
|
CIM_STOP_ALL_PROVIDERS_RESPONSE_MESSAGE, |
|
|
// Monitor-related messages: | // Monitor-related messages: |
| |
SOCKET_MESSAGE, | SOCKET_MESSAGE, |
|
|
// HTTP messages: | // HTTP messages: |
| |
HTTP_MESSAGE, | HTTP_MESSAGE, |
|
HTTP_ERROR_MESSAGE, |
|
|
|
// Exception messages to be passed to a CIM client application: |
|
|
|
CLIENT_EXCEPTION_MESSAGE, |
|
|
|
ASYNC_REGISTER_CIM_SERVICE, |
|
ASYNC_DEREGISTER_CIM_SERVICE, |
|
ASYNC_UPDATE_CIM_SERVICE, |
|
ASYNC_IOCTL, |
|
ASYNC_CIMSERVICE_START, |
|
ASYNC_CIMSERVICE_STOP, |
|
ASYNC_CIMSERVICE_PAUSE, |
|
ASYNC_CIMSERVICE_RESUME, |
|
|
|
ASYNC_ASYNC_OP_START, |
|
ASYNC_ASYNC_OP_RESULT, |
|
ASYNC_ASYNC_LEGACY_OP_START, |
|
ASYNC_ASYNC_LEGACY_OP_RESULT, |
|
|
|
ASYNC_FIND_SERVICE_Q, |
|
ASYNC_FIND_SERVICE_Q_RESULT, |
|
ASYNC_ENUMERATE_SERVICE, |
|
ASYNC_ENUMERATE_SERVICE_RESULT, |
|
|
|
ASYNC_REGISTERED_MODULE, |
|
ASYNC_DEREGISTERED_MODULE, |
|
ASYNC_FIND_MODULE_IN_SERVICE, |
|
ASYNC_FIND_MODULE_IN_SERVICE_RESPONSE, |
|
|
|
ASYNC_ASYNC_MODULE_OP_START, |
|
ASYNC_ASYNC_MODULE_OP_RESULT, |
| |
NUMBER_OF_MESSAGES | NUMBER_OF_MESSAGES |
}; | }; |