version 1.16, 2003/10/22 15:48:05
|
version 1.17, 2003/10/30 23:14:15
|
|
|
| |
#include <Pegasus/Config/ConfigManager.h> | #include <Pegasus/Config/ConfigManager.h> |
| |
|
#include <Pegasus/ProviderManager2/ProviderManagerModule.h> |
|
#include <Pegasus/ProviderManager2/ProviderManager.h> |
|
|
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
// BEGIN TEMP SECTION | // BEGIN TEMP SECTION |
class ProviderManagerContainer | class ProviderManagerContainer |
{ | { |
public: | public: |
ProviderManagerContainer(const String & physicalName, const String & logicalName, const String & interfaceName) |
ProviderManagerContainer(void) : _manager(0) |
|
{ |
|
} |
|
|
|
ProviderManagerContainer(const ProviderManagerContainer & container) : _manager(0) |
|
{ |
|
*this = container; |
|
} |
|
|
|
ProviderManagerContainer(const String & physicalName, const String & logicalName, const String & interfaceName) : _manager(0) |
{ | { |
#if defined(PEGASUS_OS_TYPE_WINDOWS) | #if defined(PEGASUS_OS_TYPE_WINDOWS) |
_physicalName = physicalName + String(".dll"); | _physicalName = physicalName + String(".dll"); |
|
|
_module.load(); | _module.load(); |
| |
_manager = _module.getProviderManager(_logicalName); | _manager = _module.getProviderManager(_logicalName); |
|
|
|
PEGASUS_ASSERT(_manager != 0); |
} | } |
| |
~ProviderManagerContainer(void) | ~ProviderManagerContainer(void) |
|
|
_module.unload(); | _module.unload(); |
} | } |
| |
|
ProviderManagerContainer & operator=(const ProviderManagerContainer & container) |
|
{ |
|
if(this == &container) |
|
{ |
|
return(*this); |
|
} |
|
|
|
_logicalName = container._logicalName; |
|
_physicalName = container._physicalName; |
|
_interfaceName = container._interfaceName; |
|
|
|
_module = container._module; |
|
_manager = container._manager; |
|
|
|
return(*this); |
|
} |
|
|
ProviderManager & getProviderManager(void) | ProviderManager & getProviderManager(void) |
{ | { |
return(*_manager); | return(*_manager); |
} | } |
| |
String & getPhysicalName(void) |
const String & getPhysicalName(void) const |
{ | { |
return(_physicalName); | return(_physicalName); |
} | } |
| |
String & getLogicalName(void) |
const String & getLogicalName(void) const |
{ | { |
return(_logicalName); | return(_logicalName); |
} | } |
| |
String & getInterfaceName(void) |
const String & getInterfaceName(void) const |
{ | { |
return(_interfaceName); | return(_interfaceName); |
} | } |
|
|
// find provider manager for provider interface | // find provider manager for provider interface |
for(Uint32 i = 0, n = _providerManagers.size(); i < n; i++) | for(Uint32 i = 0, n = _providerManagers.size(); i < n; i++) |
{ | { |
|
CString s1 = name.getInterfaceName().getCString(); |
|
const char * p1 = s1; |
|
|
|
CString s2 = _providerManagers[i].getInterfaceName().getCString(); |
|
const char * p2 = s2; |
|
|
if(String::equalNoCase(name.getInterfaceName(), _providerManagers[i].getInterfaceName())) | if(String::equalNoCase(name.getInterfaceName(), _providerManagers[i].getInterfaceName())) |
{ | { |
try | try |
|
|
"ProviderManagerService::handleCimRequest() passing control to provider manager."); | "ProviderManagerService::handleCimRequest() passing control to provider manager."); |
| |
// forward request | // forward request |
response = _providerManagers[0].getProviderManager().processMessage(request); |
response = _providerManagers[i].getProviderManager().processMessage(request); |
} | } |
catch(...) | catch(...) |
{ | { |