version 1.10, 2003/11/27 01:28:35
|
version 1.10.2.2, 2004/02/19 01:01:54
|
|
|
#include <Pegasus/ProviderManager2/Default/OperationResponseHandler.h> | #include <Pegasus/ProviderManager2/Default/OperationResponseHandler.h> |
| |
#include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h> | #include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h> |
|
#include <Pegasus/ProviderManager2/ProviderManagerService.h> |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::INSTANCE); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::INSTANCE); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::INSTANCE); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::INSTANCE); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::INSTANCE); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::INSTANCE); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::ASSOCIATION); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::ASSOCIATION); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::ASSOCIATION); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
String::EMPTY, | String::EMPTY, |
0); |
ProviderType::METHOD); |
| |
// resolve provider name | // resolve provider name |
name = _resolveProviderName(name); | name = _resolveProviderName(name); |
|
|
| |
response->dest = request->queueIds.top(); | response->dest = request->queueIds.top(); |
| |
/* |
EnableIndicationsResponseHandler *handler = |
// ATTN: need pointer to Provider Manager Server! |
new EnableIndicationsResponseHandler(request, response, |
//EnableIndicationsResponseHandler *handler = |
request->provider, ProviderManagerService::providerManagerService); |
// new EnableIndicationsResponseHandler(request, response, this); |
|
| |
try | try |
{ | { |
// get the provider file name and logical name |
String physicalName=_resolvePhysicalName( |
Triad<String, String, String> triad = |
request->providerModule.getProperty( |
_getProviderRegPair(request->provider, request->providerModule); |
request->providerModule.findProperty("Location")).getValue().toString()); |
|
|
|
ProviderName name(String::EMPTY, |
|
request->provider.getProperty(request->providerModule.findProperty |
|
("Name")).getValue ().toString (), |
|
physicalName, |
|
request->providerModule.getProperty(request->providerModule.findProperty |
|
("InterfaceType")).getValue().toString(), |
|
0); |
| |
// get cached or load new provider module | // get cached or load new provider module |
//Provider provider = |
|
OpProviderHolder ph = | OpProviderHolder ph = |
providerManager.getProvider(triad.first, triad.second, triad.third); |
providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Calling provider.enableIndications: " + | "Calling provider.enableIndications: " + |
ph.GetProvider().getName()); | ph.GetProvider().getName()); |
ph.GetProvider().protect(); |
|
|
pm_service_op_lock op_lock(&ph.GetProvider()); |
|
|
ph.GetProvider().enableIndications(*handler); | ph.GetProvider().enableIndications(*handler); |
| |
| |
|
|
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Exception: " + e.getMessage()); | "Exception: " + e.getMessage()); |
|
|
response->cimException = CIMException(e); | response->cimException = CIMException(e); |
} | } |
catch(Exception & e) | catch(Exception & e) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Exception: " + e.getMessage()); | "Exception: " + e.getMessage()); |
//l10n |
|
//response->cimException = CIMException(CIM_ERR_FAILED, "Internal Error"); |
|
response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms( | response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms( |
"ProviderManager.DefaultProviderManager.INTERNAL_ERROR", | "ProviderManager.DefaultProviderManager.INTERNAL_ERROR", |
"Internal Error")); | "Internal Error")); |
|
|
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Exception: Unknown"); | "Exception: Unknown"); |
//l10n |
|
//response->cimException = CIMException(CIM_ERR_FAILED, "Unknown Error"); |
|
response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms( | response->cimException = CIMException(CIM_ERR_FAILED, MessageLoaderParms( |
"ProviderManager.DefaultProviderManager.UNKNOWN_ERROR", | "ProviderManager.DefaultProviderManager.UNKNOWN_ERROR", |
"Unknown Error")); | "Unknown Error")); |
} | } |
*/ |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
|
|
| |
try | try |
{ | { |
ProviderName name( |
String physicalName=_resolvePhysicalName( |
String::EMPTY, |
request->providerModule.getProperty( |
String::EMPTY, |
request->providerModule.findProperty("Location")).getValue().toString()); |
String::EMPTY, |
|
String::EMPTY, |
ProviderName name(String::EMPTY, |
|
request->provider.getProperty(request->providerModule.findProperty |
|
("Name")).getValue ().toString (), |
|
physicalName, |
|
request->providerModule.getProperty(request->providerModule.findProperty |
|
("InterfaceType")).getValue().toString(), |
0); | 0); |
/* |
|
ProviderName name( |
|
String::EMPTY, |
|
String::EMPTY, |
|
objectPath.toString()); |
|
|
|
// resolve provider name |
|
name = _resolveProviderName(name); |
|
*/ |
|
| |
// get cached or load new provider module | // get cached or load new provider module |
OpProviderHolder ph = | OpProviderHolder ph = |
providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY); | providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY); |
| |
/* |
|
// get the provider file name and logical name |
|
Triad<String, String, String> triad = |
|
getProviderRegistrar()->_getProviderRegPair(request->provider, request->providerModule); |
|
|
|
// get cached or load new provider module |
|
//Provider provider = |
|
OpProviderHolder ph = |
|
providerManager.getProvider(triad.first, triad.second, triad.third); |
|
*/ |
|
|
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Calling provider.disableIndications: " + | "Calling provider.disableIndications: " + |
ph.GetProvider().getName()); | ph.GetProvider().getName()); |
|
|
| |
// Unload providers | // Unload providers |
Array<CIMInstance> _pInstances = request->providers; | Array<CIMInstance> _pInstances = request->providers; |
|
String physicalName=_resolvePhysicalName(request->providerModule.getProperty( |
|
request->providerModule.findProperty("Location")).getValue().toString()); |
| |
for(Uint32 i = 0, n = _pInstances.size(); i < n; i++) | for(Uint32 i = 0, n = _pInstances.size(); i < n; i++) |
{ | { |
/* temp disabled by Chip |
providerManager.unloadProvider(_pInstances[i].getProperty( |
// get the provider file name and logical name |
request->providerModule.findProperty |
Triad<String, String, String> triad = |
("Name")).getValue ().toString (), |
getProviderRegistrar()->_getProviderRegPair(_pInstances[i], mInstance); |
physicalName); |
|
|
providerManager.unloadProvider(triad.first, triad.second); |
|
*/ |
|
} | } |
| |
if(!disableProviderOnly) | if(!disableProviderOnly) |
|
|
return(tableKey); | return(tableKey); |
} | } |
| |
ProviderName DefaultProviderManager::_resolveProviderName(const ProviderName & providerName) |
String DefaultProviderManager::_resolvePhysicalName(const String & name) |
{ | { |
ProviderName temp = findProvider(providerName); |
String physicalName; |
| |
String physicalName = temp.getPhysicalName(); |
|
|
|
// fully qualify physical provider name (module), if not already done so. |
|
#if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC) | #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC) |
physicalName = physicalName + String(".dll"); |
physicalName = name + String(".dll"); |
#elif defined(PEGASUS_PLATFORM_LINUX_IX86_GNU) || defined(PEGASUS_PLATFORM_LINUX_IA86_GNU) | #elif defined(PEGASUS_PLATFORM_LINUX_IX86_GNU) || defined(PEGASUS_PLATFORM_LINUX_IA86_GNU) |
String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir")); | String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir")); |
physicalName = root + String("/lib") + physicalName + String(".so"); |
physicalName = root + String("/lib") + name + String(".so"); |
#elif defined(PEGASUS_OS_HPUX) | #elif defined(PEGASUS_OS_HPUX) |
String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir")); | String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir")); |
physicalName = root + String("/lib") + moduleLocation + String(".sl"); |
physicalName = root + String("/lib") + name + String(".sl"); |
#elif defined(PEGASUS_OS_OS400) | #elif defined(PEGASUS_OS_OS400) |
// do nothing |
physicalName = name; |
#else | #else |
String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir")); | String root = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir")); |
physicalName = root + String("/lib") + physicalName + String(".so"); |
physicalName = root + String("/lib") + name + String(".so"); |
|
|
#endif | #endif |
| |
|
return physicalName; |
|
} |
|
|
|
ProviderName DefaultProviderManager::_resolveProviderName(const ProviderName & providerName) |
|
{ |
|
ProviderName temp = findProvider(providerName); |
|
|
|
String physicalName = _resolvePhysicalName(temp.getPhysicalName()); |
|
|
temp.setPhysicalName(physicalName); | temp.setPhysicalName(physicalName); |
| |
return(temp); | return(temp); |