version 1.31, 2006/04/18 19:08:44
|
version 1.32, 2006/06/19 20:47:39
|
|
|
# define LIBRARY_NAME_CMPIPM "QSYS/QYCMCMPIPM" | # define LIBRARY_NAME_CMPIPM "QSYS/QYCMCMPIPM" |
# define LIBRARY_NAME_JMPIPM "QSYS/QYCMJMPIPM" | # define LIBRARY_NAME_JMPIPM "QSYS/QYCMJMPIPM" |
#else | #else |
# define LIBRARY_NAME_DEFAULTPM "DefaultProviderManager" |
|
# define LIBRARY_NAME_CMPIPM "CMPIProviderManager" | # define LIBRARY_NAME_CMPIPM "CMPIProviderManager" |
# define LIBRARY_NAME_JMPIPM "JMPIProviderManager" | # define LIBRARY_NAME_JMPIPM "JMPIProviderManager" |
#endif | #endif |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
// BEGIN TEMP SECTION |
|
class ProviderManagerContainer | class ProviderManagerContainer |
{ | { |
public: | public: |
ProviderManagerContainer() |
|
: _manager(0) |
|
{ |
|
} |
|
|
|
ProviderManagerContainer(const ProviderManagerContainer & container) |
|
: _manager(0) |
|
{ |
|
*this = container; |
|
} |
|
| |
ProviderManagerContainer( | ProviderManagerContainer( |
const String& physicalName, | const String& physicalName, |
|
|
_logicalName = logicalName; | _logicalName = logicalName; |
_interfaceName = interfaceName; | _interfaceName = interfaceName; |
| |
_module = ProviderManagerModule(_physicalName); |
_module.reset(new ProviderManagerModule(_physicalName)); |
Boolean moduleLoaded = _module.load(); |
Boolean moduleLoaded = _module->load(); |
| |
if (moduleLoaded) | if (moduleLoaded) |
{ | { |
_manager = _module.getProviderManager(_logicalName); |
_manager = _module->getProviderManager(_logicalName); |
} | } |
else | else |
{ | { |
|
|
_manager->setSubscriptionInitComplete (subscriptionInitComplete); | _manager->setSubscriptionInitComplete (subscriptionInitComplete); |
} | } |
| |
~ProviderManagerContainer() |
ProviderManagerContainer( |
|
const String& interfaceName, |
|
PEGASUS_INDICATION_CALLBACK_T indicationCallback, |
|
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback, |
|
Boolean subscriptionInitComplete, |
|
ProviderManager* manager) |
|
: |
|
_interfaceName(interfaceName), |
|
_manager(manager), |
|
_module(0) |
{ | { |
delete _manager; |
_manager->setIndicationCallback(indicationCallback); |
_module.unload(); |
_manager->setResponseChunkCallback(responseChunkCallback); |
|
_manager->setSubscriptionInitComplete(subscriptionInitComplete); |
} | } |
| |
ProviderManagerContainer& operator=( |
~ProviderManagerContainer() |
const ProviderManagerContainer & container) |
|
{ |
|
if (this == &container) |
|
{ | { |
return *this; |
delete _manager; |
} |
|
|
|
_logicalName = container._logicalName; |
|
_physicalName = container._physicalName; |
|
_interfaceName = container._interfaceName; |
|
|
|
_module = container._module; |
|
_manager = container._manager; |
|
| |
return *this; |
if (_module.get()) |
|
_module->unload(); |
} | } |
| |
ProviderManager* getProviderManager() | ProviderManager* getProviderManager() |
|
|
return _manager; | return _manager; |
} | } |
| |
const String& getPhysicalName() const |
|
{ |
|
return _physicalName; |
|
} |
|
|
|
const String& getLogicalName() const |
|
{ |
|
return _logicalName; |
|
} |
|
|
|
const String& getInterfaceName() const | const String& getInterfaceName() const |
{ | { |
return _interfaceName; | return _interfaceName; |
} | } |
| |
|
|
private: | private: |
|
|
|
ProviderManagerContainer(); |
|
ProviderManagerContainer& operator=(const ProviderManagerContainer&); |
|
ProviderManagerContainer(const ProviderManagerContainer&); |
|
|
String _physicalName; | String _physicalName; |
String _logicalName; | String _logicalName; |
String _interfaceName; | String _interfaceName; |
|
|
ProviderManagerModule _module; |
|
ProviderManager* _manager; | ProviderManager* _manager; |
|
AutoPtr<ProviderManagerModule> _module; |
}; | }; |
// END TEMP SECTION |
|
|
|
| |
PEGASUS_INDICATION_CALLBACK_T | PEGASUS_INDICATION_CALLBACK_T |
BasicProviderManagerRouter::_indicationCallback = 0; | BasicProviderManagerRouter::_indicationCallback = 0; |
|
|
PEGASUS_RESPONSE_CHUNK_CALLBACK_T | PEGASUS_RESPONSE_CHUNK_CALLBACK_T |
BasicProviderManagerRouter::_responseChunkCallback = 0; | BasicProviderManagerRouter::_responseChunkCallback = 0; |
| |
|
ProviderManager* |
|
(*BasicProviderManagerRouter::_createDefaultProviderManagerCallback)() = 0; |
|
|
BasicProviderManagerRouter::BasicProviderManagerRouter( | BasicProviderManagerRouter::BasicProviderManagerRouter( |
PEGASUS_INDICATION_CALLBACK_T indicationCallback, | PEGASUS_INDICATION_CALLBACK_T indicationCallback, |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback, |
|
ProviderManager* (*createDefaultProviderManagerCallback)()) |
{ | { |
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, | PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, |
"BasicProviderManagerRouter::BasicProviderManagerRouter"); | "BasicProviderManagerRouter::BasicProviderManagerRouter"); |
|
|
_indicationCallback = indicationCallback; | _indicationCallback = indicationCallback; |
_responseChunkCallback = responseChunkCallback; | _responseChunkCallback = responseChunkCallback; |
_subscriptionInitComplete = false; | _subscriptionInitComplete = false; |
|
_createDefaultProviderManagerCallback = |
|
createDefaultProviderManagerCallback; |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
} | } |
|
|
// another temporary solution for converting a generic file name into | // another temporary solution for converting a generic file name into |
// a file name useable by each platform. | // a file name useable by each platform. |
| |
|
// The DefaultProviderManager is now statically linked rather than |
|
// dynamically loaded. This code is no longer used but remains for |
|
// reference purposes. |
|
|
#if defined(PEGASUS_ENABLE_DEFAULT_PROVIDER_MANAGER) | #if defined(PEGASUS_ENABLE_DEFAULT_PROVIDER_MANAGER) |
if (interfaceType == "C++Default") |
if (interfaceType == "C++Default" && |
|
_createDefaultProviderManagerCallback) |
{ | { |
|
ProviderManager* pm = (*_createDefaultProviderManagerCallback)(); |
ProviderManagerContainer* pmc = new ProviderManagerContainer( | ProviderManagerContainer* pmc = new ProviderManagerContainer( |
LIBRARY_NAME_DEFAULTPM, |
|
"DEFAULT", |
|
"C++Default", | "C++Default", |
_indicationCallback, | _indicationCallback, |
_responseChunkCallback, | _responseChunkCallback, |
_subscriptionInitComplete); |
_subscriptionInitComplete, |
|
pm); |
_providerManagerTable.append(pmc); | _providerManagerTable.append(pmc); |
return pmc->getProviderManager(); | return pmc->getProviderManager(); |
} | } |