version 1.67, 2005/03/17 01:09:55
|
version 1.77, 2006/07/12 19:46:26
|
|
|
//%2005//////////////////////////////////////////////////////////////////////// |
//%2006//////////////////////////////////////////////////////////////////////// |
// | // |
// 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. |
|
|
// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. | // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. |
// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; | // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
// EMC Corporation; VERITAS Software Corporation; The Open Group. | // EMC Corporation; VERITAS Software Corporation; The Open Group. |
|
// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
|
// EMC Corporation; Symantec 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 |
|
|
// Willis White (whiwill@us.ibm.com) PEP 127 and 128 | // Willis White (whiwill@us.ibm.com) PEP 127 and 128 |
// Brian G. Campbell, EMC (campbell_brian@emc.com) - PEP140/phase1 | // Brian G. Campbell, EMC (campbell_brian@emc.com) - PEP140/phase1 |
// Amit K Arora, IBM (amita@in.ibm.com) for Bug#1090 | // Amit K Arora, IBM (amita@in.ibm.com) for Bug#1090 |
|
// John Alex, IBM (johnalex@us.ibm.com) - Bug#2290 |
// | // |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
|
|
#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/TimeValue.h> |
#include <Pegasus/Common/CIMOperationType.h> | #include <Pegasus/Common/CIMOperationType.h> |
|
#include <Pegasus/Common/Linkable.h> |
|
#include <Pegasus/Common/IDFactory.h> |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
The Message class also provides previous and next pointers which are | The Message class also provides previous and next pointers which are |
used to place the messages on a queue by the MessageQueue class. | used to place the messages on a queue by the MessageQueue class. |
*/ | */ |
class PEGASUS_COMMON_LINKAGE Message |
class PEGASUS_COMMON_LINKAGE Message : public Linkable |
{ | { |
public: | public: |
| |
|
|
_routing_code(routing_code), | _routing_code(routing_code), |
_mask(mask), | _mask(mask), |
_httpMethod (HTTP_METHOD__POST), | _httpMethod (HTTP_METHOD__POST), |
|
_close_connect(false), |
_last_thread_id(pegasus_thread_self()), | _last_thread_id(pegasus_thread_self()), |
_next(0), | _next(0), |
_prev(0), | _prev(0), |
|
|
| |
| |
virtual ~Message(); | virtual ~Message(); |
|
Boolean getCloseConnect() const { return _close_connect; } |
|
void setCloseConnect(Boolean close_connect) |
|
{ |
|
_close_connect = close_connect; |
|
} |
| |
Uint32 getType() const { return _type; } | Uint32 getType() const { return _type; } |
| |
|
|
| |
void endProvider(); | void endProvider(); |
| |
CIMDateTime getStartServerTime() const { return _timeServerStart; } |
TimeValue getStartServerTime() const { return _timeServerStart; } |
| |
void setStartServerTime(CIMDateTime timeServerStart) |
void setStartServerTime(TimeValue timeServerStart) |
{ | { |
_timeServerStart = timeServerStart; | _timeServerStart = timeServerStart; |
} | } |
| |
CIMDateTime getStartProviderTime() const { return _timeProviderStart; } |
TimeValue getStartProviderTime() const { return _timeProviderStart; } |
| |
void setStartProviderTime(CIMDateTime timeProviderStart) |
void setStartProviderTime(TimeValue timeProviderStart) |
{ | { |
_timeProviderStart = timeProviderStart; | _timeProviderStart = timeProviderStart; |
} | } |
| |
CIMDateTime getEndServerTime() const { return _timeServerEnd; } |
TimeValue getEndServerTime() const { return _timeServerEnd; } |
| |
void setEndServerTime (CIMDateTime timeServerEnd) |
void setEndServerTime (TimeValue timeServerEnd) |
{ | { |
_timeServerEnd = timeServerEnd; | _timeServerEnd = timeServerEnd; |
} | } |
| |
CIMDateTime getEndProviderTime() const { return _timeProviderEnd; } |
TimeValue getEndProviderTime() const { return _timeProviderEnd; } |
| |
void setEndProviderTime(CIMDateTime timeProviderEnd) |
void setEndProviderTime(TimeValue timeProviderEnd) |
{ | { |
_timeProviderEnd = timeProviderEnd; | _timeProviderEnd = timeProviderEnd; |
} | } |
| |
CIMDateTime getProviderTime() { return _providerTime;} |
TimeValue getServerTime() { return _serverTime; } |
|
|
CIMDateTime getTotalTime() { return _totalTime; } |
|
|
|
CIMDateTime getServerTime() { return _serverTime; } |
|
// | // |
#endif | #endif |
| |
|
|
| |
const Message* getPrevious() const { return _prev; } | const Message* getPrevious() const { return _prev; } |
| |
static Uint32 getNextKey() |
static Uint32 getNextKey() { return _keyFactory.getID(); } |
{ |
|
AutoMutex autoMut(_mut); |
|
Uint32 ret = _nextKey++; |
|
return ret; |
|
} |
|
| |
static CIMOperationType convertMessageTypetoCIMOpType(Uint32 type); | static CIMOperationType convertMessageTypetoCIMOpType(Uint32 type); |
| |
|
#ifdef PEGASUS_DEBUG |
virtual void print( | virtual void print( |
PEGASUS_STD(ostream)& os, | PEGASUS_STD(ostream)& os, |
Boolean printHeader = true) const; | Boolean printHeader = true) const; |
|
#endif |
// << Thu Dec 27 10:46:04 2001 mdd >> for use with DQueue container |
|
// as used by AsyncOpNode |
|
Boolean operator == (const void *msg ) |
|
{ |
|
if (reinterpret_cast<void *>(this) == msg ) |
|
return true; |
|
return false; |
|
} |
|
| |
Message *get_async(void) | Message *get_async(void) |
{ | { |
|
|
Uint32 _mask; | Uint32 _mask; |
HttpMethod _httpMethod; | HttpMethod _httpMethod; |
// Needed for performance measurement | // Needed for performance measurement |
CIMDateTime _timeServerStart; |
TimeValue _timeServerStart; |
CIMDateTime _timeServerEnd; |
TimeValue _timeServerEnd; |
CIMDateTime _timeProviderStart; |
TimeValue _timeProviderStart; |
CIMDateTime _timeProviderEnd; |
TimeValue _timeProviderEnd; |
CIMDateTime _providerTime; |
TimeValue _serverTime; |
CIMDateTime _serverTime; |
Boolean _close_connect; |
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 |
|
|
MessageQueue* _owner; | MessageQueue* _owner; |
Boolean _isComplete; | Boolean _isComplete; |
Uint32 _index; | Uint32 _index; |
static Uint32 _nextKey; |
static IDFactory _keyFactory; |
static Mutex _mut; |
|
|
|
|
|
| |
friend class cimom; | friend class cimom; |
friend class MessageQueue; | friend class MessageQueue; |
|
|
CIM_DELETE_QUALIFIER_REQUEST_MESSAGE, | CIM_DELETE_QUALIFIER_REQUEST_MESSAGE, |
CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE, | CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE, |
CIM_INVOKE_METHOD_REQUEST_MESSAGE, | CIM_INVOKE_METHOD_REQUEST_MESSAGE, |
CIM_ENABLE_INDICATION_SUBSCRIPTION_REQUEST_MESSAGE, |
|
CIM_MODIFY_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, // 30 |
CIM_HANDLE_INDICATION_REQUEST_MESSAGE, |
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_CREATE_SUBSCRIPTION_REQUEST_MESSAGE, // 30 |
// new |
|
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, |
|
|
// new |
|
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, | CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE, |
| |
CIM_GET_CLASS_RESPONSE_MESSAGE, | CIM_GET_CLASS_RESPONSE_MESSAGE, |
CIM_GET_INSTANCE_RESPONSE_MESSAGE, // 40 |
CIM_GET_INSTANCE_RESPONSE_MESSAGE, |
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, // 40 |
CIM_CREATE_CLASS_RESPONSE_MESSAGE, | CIM_CREATE_CLASS_RESPONSE_MESSAGE, |
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, | CIM_ENUMERATE_CLASSES_RESPONSE_MESSAGE, |
CIM_ENUMERATE_CLASS_NAMES_RESPONSE_MESSAGE, | CIM_ENUMERATE_CLASS_NAMES_RESPONSE_MESSAGE, |
CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE, // 50 |
CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE, |
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, // 50 |
CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE, | CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE, |
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, | CIM_SET_PROPERTY_RESPONSE_MESSAGE, |
CIM_GET_QUALIFIER_RESPONSE_MESSAGE, | CIM_GET_QUALIFIER_RESPONSE_MESSAGE, |
CIM_SET_QUALIFIER_RESPONSE_MESSAGE, // 60 |
CIM_SET_QUALIFIER_RESPONSE_MESSAGE, |
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, // 60 |
CIM_ENABLE_INDICATION_SUBSCRIPTION_RESPONSE_MESSAGE, |
|
CIM_MODIFY_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, | CIM_NOTIFY_PROVIDER_REGISTRATION_RESPONSE_MESSAGE, |
CIM_NOTIFY_PROVIDER_TERMINATION_RESPONSE_MESSAGE, | CIM_NOTIFY_PROVIDER_TERMINATION_RESPONSE_MESSAGE, |
CIM_HANDLE_INDICATION_RESPONSE_MESSAGE, // 70 |
CIM_HANDLE_INDICATION_RESPONSE_MESSAGE, |
|
|
// new |
|
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, |
|
|
// new |
|
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, // 70 |
CIM_STOP_ALL_PROVIDERS_RESPONSE_MESSAGE, |
|
| |
// Monitor-related messages: | // Monitor-related messages: |
| |
|
|
// HTTP messages: | // HTTP messages: |
| |
HTTP_MESSAGE, | HTTP_MESSAGE, |
HTTP_ERROR_MESSAGE, // 80 |
HTTP_ERROR_MESSAGE, |
| |
// Exception messages to be passed to a CIM client application: | // Exception messages to be passed to a CIM client application: |
| |
|
|
ASYNC_DEREGISTER_CIM_SERVICE, | ASYNC_DEREGISTER_CIM_SERVICE, |
ASYNC_UPDATE_CIM_SERVICE, | ASYNC_UPDATE_CIM_SERVICE, |
ASYNC_IOCTL, | ASYNC_IOCTL, |
ASYNC_CIMSERVICE_START, |
ASYNC_CIMSERVICE_START, // 80 |
ASYNC_CIMSERVICE_STOP, | ASYNC_CIMSERVICE_STOP, |
ASYNC_CIMSERVICE_PAUSE, | ASYNC_CIMSERVICE_PAUSE, |
ASYNC_CIMSERVICE_RESUME, | ASYNC_CIMSERVICE_RESUME, |
| |
ASYNC_ASYNC_OP_START, // 90 |
ASYNC_ASYNC_OP_START, |
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, |
ASYNC_ENUMERATE_SERVICE, // 90 |
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, // 100 |
ASYNC_FIND_MODULE_IN_SERVICE, |
ASYNC_FIND_MODULE_IN_SERVICE_RESPONSE, | ASYNC_FIND_MODULE_IN_SERVICE_RESPONSE, |
| |
ASYNC_ASYNC_MODULE_OP_START, | ASYNC_ASYNC_MODULE_OP_START, |
|
|
CIM_NOTIFY_PROVIDER_ENABLE_REQUEST_MESSAGE, | CIM_NOTIFY_PROVIDER_ENABLE_REQUEST_MESSAGE, |
CIM_NOTIFY_PROVIDER_ENABLE_RESPONSE_MESSAGE, | CIM_NOTIFY_PROVIDER_ENABLE_RESPONSE_MESSAGE, |
| |
|
CIM_NOTIFY_PROVIDER_FAIL_REQUEST_MESSAGE, // 100 |
|
CIM_NOTIFY_PROVIDER_FAIL_RESPONSE_MESSAGE, |
|
|
CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE, | CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE, |
CIM_INITIALIZE_PROVIDER_RESPONSE_MESSAGE, | CIM_INITIALIZE_PROVIDER_RESPONSE_MESSAGE, |
| |