version 1.3.4.1, 2007/06/05 06:45:48
|
version 1.25.4.5, 2013/07/20 18:32:52
|
|
|
//%2006//////////////////////////////////////////////////////////////////////// |
//%LICENSE//////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development |
// Licensed to The Open Group (TOG) under one or more contributor license |
// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. |
// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with |
// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; |
// this work for additional information regarding copyright ownership. |
// IBM Corp.; EMC Corporation, The Open Group. |
// Each contributor licenses this file to you under the OpenPegasus Open |
// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; |
// Source License; you may not use this file except in compliance with the |
// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. |
// License. |
// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
// |
// EMC Corporation; VERITAS Software Corporation; The Open Group. |
// Permission is hereby granted, free of charge, to any person obtaining a |
// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
// copy of this software and associated documentation files (the "Software"), |
// EMC Corporation; Symantec Corporation; The Open Group. |
// to deal in the Software without restriction, including without limitation |
// |
// the rights to use, copy, modify, merge, publish, distribute, sublicense, |
// Permission is hereby granted, free of charge, to any person obtaining a copy |
// and/or sell copies of the Software, and to permit persons to whom the |
// of this software and associated documentation files (the "Software"), to |
// Software is furnished to do so, subject to the following conditions: |
// deal in the Software without restriction, including without limitation the |
// |
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
// The above copyright notice and this permission notice shall be included |
// sell copies of the Software, and to permit persons to whom the Software is |
// in all copies or substantial portions of the Software. |
// furnished to do so, subject to the following conditions: |
// |
// |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT |
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR |
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
// | // |
//============================================================================== |
////////////////////////////////////////////////////////////////////////// |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
#include "ProviderMessageHandler.h" | #include "ProviderMessageHandler.h" |
| |
|
#include <exception> |
|
|
#include <Pegasus/Common/OperationContextInternal.h> | #include <Pegasus/Common/OperationContextInternal.h> |
#include <Pegasus/Common/Tracer.h> | #include <Pegasus/Common/Tracer.h> |
#include <Pegasus/Common/StatisticalData.h> | #include <Pegasus/Common/StatisticalData.h> |
|
|
#include <Pegasus/ProviderManager2/OperationResponseHandler.h> | #include <Pegasus/ProviderManager2/OperationResponseHandler.h> |
#include <Pegasus/ProviderManager2/AutoPThreadSecurity.h> | #include <Pegasus/ProviderManager2/AutoPThreadSecurity.h> |
| |
#define HANDLE_PROVIDER_EXCEPTION(providerCall, handler) \ |
#define HANDLE_PROVIDER_CALL(traceString, providerCall, handler) \ |
|
do \ |
|
{ \ |
|
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
|
"Calling provider." #traceString ": %s", \ |
|
(const char*)_fullyQualifiedProviderName.getCString())); \ |
try \ | try \ |
{ \ | { \ |
providerCall; \ | providerCall; \ |
} \ | } \ |
catch (CIMException& e) \ | catch (CIMException& e) \ |
{ \ | { \ |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1, \ |
"Provider Exception: " + e.getMessage()); \ |
"Provider CIMException: %s", \ |
handler.setStatus( \ |
(const char*)e.getMessage().getCString())); \ |
e.getCode(), e.getContentLanguages(), e.getMessage()); \ |
handler.setCIMException(e); \ |
} \ | } \ |
catch (Exception& e) \ | catch (Exception& e) \ |
{ \ | { \ |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1, \ |
"Provider Exception: " + e.getMessage()); \ |
"Provider Exception: %s", \ |
|
(const char*)e.getMessage().getCString())); \ |
handler.setStatus( \ | handler.setStatus( \ |
CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage()); \ |
CIM_ERR_FAILED, \ |
|
e.getContentLanguages(), \ |
|
e.getMessage()); \ |
|
} \ |
|
catch (const PEGASUS_STD(exception)& e) \ |
|
{ \ |
|
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1, \ |
|
"Provider exception: %s", e.what())); \ |
|
handler.setStatus(CIM_ERR_FAILED, e.what()); \ |
} \ | } \ |
catch (...) \ | catch (...) \ |
{ \ | { \ |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL1, \ |
"Provider Exception: Unknown"); \ |
"Provider unknown exception"); \ |
handler.setStatus(CIM_ERR_FAILED, "Unknown error."); \ | handler.setStatus(CIM_ERR_FAILED, "Unknown error."); \ |
} |
} \ |
|
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
|
"Returned from provider." #traceString ": %s", \ |
|
(const char*)_fullyQualifiedProviderName.getCString())); \ |
|
} while (0) |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
// Default Provider Manager | // Default Provider Manager |
// | // |
ProviderMessageHandler::ProviderMessageHandler( | ProviderMessageHandler::ProviderMessageHandler( |
|
const String& moduleName, |
const String& name, | const String& name, |
CIMProvider* provider, | CIMProvider* provider, |
PEGASUS_INDICATION_CALLBACK_T indicationCallback, | PEGASUS_INDICATION_CALLBACK_T indicationCallback, |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback, | PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback, |
Boolean subscriptionInitComplete) | Boolean subscriptionInitComplete) |
: _name(name), | : _name(name), |
|
_fullyQualifiedProviderName(moduleName + ":" + name), |
_provider(provider), | _provider(provider), |
_indicationCallback(indicationCallback), | _indicationCallback(indicationCallback), |
_responseChunkCallback(responseChunkCallback), | _responseChunkCallback(responseChunkCallback), |
|
|
return _name; | return _name; |
} | } |
| |
|
CIMProvider* ProviderMessageHandler::getProvider() |
|
{ |
|
return _provider; |
|
} |
|
|
void ProviderMessageHandler::setProvider(CIMProvider* provider) | void ProviderMessageHandler::setProvider(CIMProvider* provider) |
{ | { |
_provider = provider; | _provider = provider; |
|
|
| |
void ProviderMessageHandler::initialize(CIMOMHandle& cimom) | void ProviderMessageHandler::initialize(CIMOMHandle& cimom) |
{ | { |
|
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.initialize: %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
|
|
|
try |
|
{ |
_provider->initialize(cimom); | _provider->initialize(cimom); |
} | } |
|
catch (...) |
|
{ |
|
PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL1, |
|
"Caught exception from provider %s initialize() method.", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
|
throw; |
|
} |
|
|
|
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Returned from provider.initialize: %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
|
} |
| |
void ProviderMessageHandler::terminate() | void ProviderMessageHandler::terminate() |
{ | { |
_disableIndications(); | _disableIndications(); |
| |
|
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.terminate: %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
|
|
try | try |
{ | { |
_provider->terminate(); | _provider->terminate(); |
} | } |
catch (...) | catch (...) |
{ | { |
PEG_TRACE_STRING(TRC_DISCARDED_DATA, Tracer::LEVEL2, |
PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL1, |
"Caught exception from provider " + _name + |
"Caught exception from provider %s terminate() method.", |
" terminate() method."); |
(const char*)_fullyQualifiedProviderName.getCString())); |
|
throw; |
} | } |
|
|
|
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Returned from provider.terminate: %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
} | } |
| |
void ProviderMessageHandler::subscriptionInitComplete() | void ProviderMessageHandler::subscriptionInitComplete() |
|
|
_subscriptionInitComplete = true; | _subscriptionInitComplete = true; |
} | } |
| |
|
void ProviderMessageHandler::indicationServiceDisabled() |
|
{ |
|
_subscriptionInitComplete = false; |
|
} |
|
|
CIMResponseMessage* ProviderMessageHandler::processMessage( | CIMResponseMessage* ProviderMessageHandler::processMessage( |
CIMRequestMessage* request) | CIMRequestMessage* request) |
{ | { |
|
|
break; | break; |
| |
default: | default: |
PEGASUS_ASSERT(0); |
PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);) |
break; | break; |
} | } |
} | } |
catch (CIMException& e) | catch (CIMException& e) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,"CIMException: %s", |
"CIMException: " + e.getMessage()); |
(const char*)e.getMessage().getCString())); |
response = request->buildResponse(); | response = request->buildResponse(); |
response->cimException = PEGASUS_CIM_EXCEPTION_LANG( | response->cimException = PEGASUS_CIM_EXCEPTION_LANG( |
e.getContentLanguages(), e.getCode(), e.getMessage()); | e.getContentLanguages(), e.getCode(), e.getMessage()); |
} | } |
catch (Exception& e) | catch (Exception& e) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,"Exception: %s", |
"Exception: " + e.getMessage()); |
(const char*)e.getMessage().getCString())); |
response = request->buildResponse(); | response = request->buildResponse(); |
response->cimException = PEGASUS_CIM_EXCEPTION_LANG( | response->cimException = PEGASUS_CIM_EXCEPTION_LANG( |
e.getContentLanguages(), CIM_ERR_FAILED, e.getMessage()); | e.getContentLanguages(), CIM_ERR_FAILED, e.getMessage()); |
} | } |
catch (...) | catch (...) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL1, |
"Exception: Unknown"); | "Exception: Unknown"); |
response = request->buildResponse(); | response = request->buildResponse(); |
response->cimException = PEGASUS_CIM_EXCEPTION( | response->cimException = PEGASUS_CIM_EXCEPTION( |
|
|
providerContext.insert(context.get(AcceptLanguageListContainer::NAME)); | providerContext.insert(context.get(AcceptLanguageListContainer::NAME)); |
providerContext.insert(context.get(ContentLanguageListContainer::NAME)); | providerContext.insert(context.get(ContentLanguageListContainer::NAME)); |
| |
//PEP - 268 |
if (context.contains(UserRoleContainer::NAME)) |
if (context.contains(SSLCertificateChainContainer::NAME)) |
|
{ | { |
providerContext.insert( |
providerContext.insert(context.get(UserRoleContainer::NAME)); |
context.get(SSLCertificateChainContainer::NAME)); |
|
} | } |
| |
return providerContext; | return providerContext; |
|
|
request->instanceName.getClassName(), | request->instanceName.getClassName(), |
request->instanceName.getKeyBindings()); | request->instanceName.getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleGetInstanceRequest - " | "ProviderMessageHandler::_handleGetInstanceRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.getInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
getInstance, |
provider->getInstance( | provider->getInstance( |
providerContext, | providerContext, |
objectPath, | objectPath, |
|
|
request->includeClassOrigin, | request->includeClassOrigin, |
request->propertyList, | request->propertyList, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
request->nameSpace, | request->nameSpace, |
request->className); | request->className); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleEnumerateInstancesRequest - " | "ProviderMessageHandler::_handleEnumerateInstancesRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.enumerateInstances: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
enumerateInstances, |
provider->enumerateInstances( | provider->enumerateInstances( |
providerContext, | providerContext, |
objectPath, | objectPath, |
|
|
request->includeClassOrigin, | request->includeClassOrigin, |
request->propertyList, | request->propertyList, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleEnumerateInstanceNamesRequest( |
CIMResponseMessage* |
|
ProviderMessageHandler::_handleEnumerateInstanceNamesRequest( |
CIMRequestMessage* message) | CIMRequestMessage* message) |
{ | { |
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, | PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, |
|
|
request->nameSpace, | request->nameSpace, |
request->className); | request->className); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleEnumerateInstanceNamesRequest - " | "ProviderMessageHandler::_handleEnumerateInstanceNamesRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.enumerateInstanceNames: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
enumerateInstanceNames, |
provider->enumerateInstanceNames( | provider->enumerateInstanceNames( |
providerContext, | providerContext, |
objectPath, | objectPath, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
request->newInstance.getPath().getClassName(), | request->newInstance.getPath().getClassName(), |
request->newInstance.getPath().getKeyBindings()); | request->newInstance.getPath().getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleCreateInstanceRequest - " | "ProviderMessageHandler::_handleCreateInstanceRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.createInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
createInstance, |
provider->createInstance( | provider->createInstance( |
providerContext, | providerContext, |
objectPath, | objectPath, |
request->newInstance, | request->newInstance, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
request->modifiedInstance.getPath().getClassName(), | request->modifiedInstance.getPath().getClassName(), |
request->modifiedInstance.getPath().getKeyBindings()); | request->modifiedInstance.getPath().getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleModifyInstanceRequest - " | "ProviderMessageHandler::_handleModifyInstanceRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.modifyInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
modifyInstance, |
provider->modifyInstance( | provider->modifyInstance( |
providerContext, | providerContext, |
objectPath, | objectPath, |
|
|
request->includeQualifiers, | request->includeQualifiers, |
request->propertyList, | request->propertyList, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
request->instanceName.getClassName(), | request->instanceName.getClassName(), |
request->instanceName.getKeyBindings()); | request->instanceName.getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleDeleteInstanceRequest - " | "ProviderMessageHandler::_handleDeleteInstanceRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.deleteInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
deleteInstance, |
provider->deleteInstance( | provider->deleteInstance( |
providerContext, | providerContext, |
objectPath, | objectPath, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
request->nameSpace, | request->nameSpace, |
request->className); | request->className); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleExecQueryRequest - " | "ProviderMessageHandler::_handleExecQueryRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
QueryExpression qx(request->queryLanguage,request->query); | QueryExpression qx(request->queryLanguage,request->query); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMInstanceQueryProvider* provider = | CIMInstanceQueryProvider* provider = |
getProviderInterface<CIMInstanceQueryProvider>(_provider); | getProviderInterface<CIMInstanceQueryProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.execQuery: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
execQuery, |
provider->execQuery( | provider->execQuery( |
providerContext, | providerContext, |
objectPath, | objectPath, |
qx, | qx, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
| |
objectPath.setKeyBindings(request->objectName.getKeyBindings()); | objectPath.setKeyBindings(request->objectName.getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleAssociatorsRequest - " | "ProviderMessageHandler::_handleAssociatorsRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
CIMObjectPath assocPath( | CIMObjectPath assocPath( |
System::getHostName(), | System::getHostName(), |
|
|
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMAssociationProvider* provider = | CIMAssociationProvider* provider = |
getProviderInterface<CIMAssociationProvider>(_provider); | getProviderInterface<CIMAssociationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.associators: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
associators, |
provider->associators( | provider->associators( |
providerContext, | providerContext, |
objectPath, | objectPath, |
|
|
request->includeClassOrigin, | request->includeClassOrigin, |
request->propertyList, | request->propertyList, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
| |
objectPath.setKeyBindings(request->objectName.getKeyBindings()); | objectPath.setKeyBindings(request->objectName.getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleAssociationNamesRequest - " | "ProviderMessageHandler::_handleAssociationNamesRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
CIMObjectPath assocPath( | CIMObjectPath assocPath( |
System::getHostName(), | System::getHostName(), |
|
|
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMAssociationProvider* provider = | CIMAssociationProvider* provider = |
getProviderInterface<CIMAssociationProvider>(_provider); | getProviderInterface<CIMAssociationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.associatorNames: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
associatorNames, |
provider->associatorNames( | provider->associatorNames( |
providerContext, | providerContext, |
objectPath, | objectPath, |
|
|
request->role, | request->role, |
request->resultRole, | request->resultRole, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
| |
objectPath.setKeyBindings(request->objectName.getKeyBindings()); | objectPath.setKeyBindings(request->objectName.getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleReferencesRequest - " | "ProviderMessageHandler::_handleReferencesRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
CIMObjectPath resultPath( | CIMObjectPath resultPath( |
System::getHostName(), | System::getHostName(), |
|
|
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMAssociationProvider* provider = | CIMAssociationProvider* provider = |
getProviderInterface<CIMAssociationProvider>(_provider); | getProviderInterface<CIMAssociationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.references: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
references, |
provider->references( | provider->references( |
providerContext, | providerContext, |
objectPath, | objectPath, |
|
|
request->includeClassOrigin, | request->includeClassOrigin, |
request->propertyList, | request->propertyList, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
| |
objectPath.setKeyBindings(request->objectName.getKeyBindings()); | objectPath.setKeyBindings(request->objectName.getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleReferenceNamesRequest - " | "ProviderMessageHandler::_handleReferenceNamesRequest - " |
"Object path: $0", |
"Object path: %s", |
objectPath.toString())); |
(const char*) objectPath.toString().getCString())); |
| |
CIMObjectPath resultPath( |
// KS_TODO Confirm that the following is cruft and not needed. |
System::getHostName(), |
// CIMObjectPath resultPath( |
request->nameSpace, |
// System::getHostName(), |
request->resultClass.getString()); |
// request->nameSpace, |
|
// request->resultClass.getString()); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMAssociationProvider* provider = | CIMAssociationProvider* provider = |
getProviderInterface<CIMAssociationProvider>(_provider); | getProviderInterface<CIMAssociationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.referenceNames: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
referenceNames, |
provider->referenceNames( | provider->referenceNames( |
providerContext, | providerContext, |
objectPath, | objectPath, |
request->resultClass, | request->resultClass, |
request->role, | request->role, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
request->messageId, | request->messageId, |
request->nameSpace, | request->nameSpace, |
request->instanceName, | request->instanceName, |
false, // localOnly |
|
false, // includeQualifiers | false, // includeQualifiers |
false, // includeClassOrigin | false, // includeClassOrigin |
propertyList, | propertyList, |
|
|
getInstanceRequest.instanceName.getClassName(), | getInstanceRequest.instanceName.getClassName(), |
getInstanceRequest.instanceName.getKeyBindings()); | getInstanceRequest.instanceName.getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleGetPropertyRequest - " | "ProviderMessageHandler::_handleGetPropertyRequest - " |
"Object path: $0, Property: $1", |
"Object path: %s, Property: %s", |
objectPath.toString(), request->propertyName.getString())); |
(const char*) objectPath.toString().getCString(), |
|
(const char*) request->propertyName.getString().getCString())); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(getInstanceRequest.operationContext)); | _createProviderOperationContext(getInstanceRequest.operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.getInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
getInstance, |
provider->getInstance( | provider->getInstance( |
providerContext, | providerContext, |
objectPath, | objectPath, |
|
|
getInstanceRequest.includeClassOrigin, | getInstanceRequest.includeClassOrigin, |
getInstanceRequest.propertyList, | getInstanceRequest.propertyList, |
handler), | handler), |
handler) |
handler); |
| |
// | // |
// Copy the GetInstance response into the GetProperty response message | // Copy the GetInstance response into the GetProperty response message |
|
|
| |
if (response->cimException.getCode() == CIM_ERR_SUCCESS) | if (response->cimException.getCode() == CIM_ERR_SUCCESS) |
{ | { |
CIMInstance instance = getInstanceResponse->cimInstance; |
CIMInstance instance = |
|
getInstanceResponse->getResponseData().getInstance(); |
| |
Uint32 pos = instance.findProperty(request->propertyName); | Uint32 pos = instance.findProperty(request->propertyName); |
| |
|
|
ModifyInstanceResponseHandler handler( | ModifyInstanceResponseHandler handler( |
&modifyInstanceRequest, modifyInstanceResponse.get(), 0); | &modifyInstanceRequest, modifyInstanceResponse.get(), 0); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleSetPropertyRequest - " | "ProviderMessageHandler::_handleSetPropertyRequest - " |
"Object path: $0, Property: $1", |
"Object path: %s, Property: %s", |
objectPath.toString(), request->propertyName.getString())); |
(const char*) objectPath.toString().getCString(), |
|
(const char*) request->propertyName.getString().getCString())); |
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.modifyInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
modifyInstance, |
provider->modifyInstance( | provider->modifyInstance( |
providerContext, | providerContext, |
objectPath, | objectPath, |
|
|
modifyInstanceRequest.includeQualifiers, | modifyInstanceRequest.includeQualifiers, |
modifyInstanceRequest.propertyList, | modifyInstanceRequest.propertyList, |
handler), | handler), |
handler) |
handler); |
| |
// | // |
// Copy the ModifyInstance response into the GetProperty response message | // Copy the ModifyInstance response into the GetProperty response message |
|
|
request->instanceName.getClassName(), | request->instanceName.getClassName(), |
request->instanceName.getKeyBindings()); | request->instanceName.getKeyBindings()); |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
PEG_TRACE(( |
|
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleInvokeMethodRequest - " | "ProviderMessageHandler::_handleInvokeMethodRequest - " |
"Object path: $0, Method: $1", |
"Object path: %s, Method: %s", |
objectPath.toString(), request->methodName.getString())); |
(const char*) objectPath.toString().getCString(), |
|
(const char*) request->methodName.getString().getCString())); |
CIMObjectPath instanceReference(request->instanceName); |
|
instanceReference.setNameSpace(request->nameSpace); |
|
| |
OperationContext providerContext( | OperationContext providerContext( |
_createProviderOperationContext(request->operationContext)); | _createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMMethodProvider* provider = | CIMMethodProvider* provider = |
getProviderInterface<CIMMethodProvider>(_provider); | getProviderInterface<CIMMethodProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.invokeMethod: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
invokeMethod, |
provider->invokeMethod( | provider->invokeMethod( |
providerContext, | providerContext, |
instanceReference, |
objectPath, |
request->methodName, | request->methodName, |
request->inParameters, | request->inParameters, |
handler), | handler), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
} | } |
} | } |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
PEG_TRACE(( |
Logger::TRACE, |
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleCreateSubscriptionRequest - " | "ProviderMessageHandler::_handleCreateSubscriptionRequest - " |
"Host name: $0 Name space: $1 Class name(s): $2", |
"Host name: %s Name space: %s Class name(s): %s", |
System::getHostName(), |
(const char*) System::getHostName().getCString(), |
request->nameSpace.getString(), |
(const char*) request->nameSpace.getString().getCString(), |
temp)); |
(const char*) temp.getCString())); |
| |
// | // |
// Save the provider instance from the request | // Save the provider instance from the request |
|
|
providerContext.insert(request->operationContext.get( | providerContext.insert(request->operationContext.get( |
SubscriptionFilterQueryContainer::NAME)); | SubscriptionFilterQueryContainer::NAME)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.createSubscription: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
createSubscription, |
provider->createSubscription( | provider->createSubscription( |
providerContext, | providerContext, |
request->subscriptionInstance.getPath(), | request->subscriptionInstance.getPath(), |
classNames, | classNames, |
request->propertyList, | request->propertyList, |
request->repeatNotificationPolicy), | request->repeatNotificationPolicy), |
handler) |
handler); |
| |
// | // |
// Increment count of current subscriptions for this provider | // Increment count of current subscriptions for this provider |
// | // |
if (status.testIfZeroAndIncrementSubscriptions()) | if (status.testIfZeroAndIncrementSubscriptions()) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"First accepted subscription"); | "First accepted subscription"); |
| |
// | // |
|
|
} | } |
} | } |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
PEG_TRACE(( |
Logger::TRACE, |
TRC_PROVIDERMANAGER, |
"ProviderMessageHandler::_handleCreateSubscriptionRequest - " |
Tracer::LEVEL3, |
"Host name: $0 Name space: $1 Class name(s): $2", |
"ProviderMessageHandler::_handleModifySubscriptionRequest - " |
System::getHostName(), |
"Host name: %s Name space: %s Class name(s): %s", |
request->nameSpace.getString(), |
(const char*) System::getHostName().getCString(), |
temp)); |
(const char*) request->nameSpace.getString().getCString(), |
|
(const char*) temp.getCString())); |
| |
// convert arguments | // convert arguments |
| |
|
|
providerContext.insert(request->operationContext.get( | providerContext.insert(request->operationContext.get( |
SubscriptionFilterQueryContainer::NAME)); | SubscriptionFilterQueryContainer::NAME)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.modifySubscription: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
modifySubscription, |
provider->modifySubscription( | provider->modifySubscription( |
providerContext, | providerContext, |
request->subscriptionInstance.getPath(), | request->subscriptionInstance.getPath(), |
classNames, | classNames, |
request->propertyList, | request->propertyList, |
request->repeatNotificationPolicy), | request->repeatNotificationPolicy), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
} | } |
} | } |
| |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
PEG_TRACE(( |
Logger::TRACE, |
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL3, |
"ProviderMessageHandler::_handleDeleteSubscriptionRequest - " | "ProviderMessageHandler::_handleDeleteSubscriptionRequest - " |
"Host name: $0 Name space: $1 Class name(s): $2", |
"Host name: %s Name space: %s Class name(s): %s", |
System::getHostName(), |
(const char*) System::getHostName().getCString(), |
request->nameSpace.getString(), |
(const char*) request->nameSpace.getString().getCString(), |
temp)); |
(const char*) temp.getCString())); |
| |
Array<CIMObjectPath> classNames; | Array<CIMObjectPath> classNames; |
| |
|
|
providerContext.insert(request->operationContext.get( | providerContext.insert(request->operationContext.get( |
SubscriptionInstanceContainer::NAME)); | SubscriptionInstanceContainer::NAME)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
AutoPThreadSecurity threadLevelSecurity(request->operationContext); |
| |
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.deleteSubscription: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
deleteSubscription, |
provider->deleteSubscription( | provider->deleteSubscription( |
providerContext, | providerContext, |
request->subscriptionInstance.getPath(), | request->subscriptionInstance.getPath(), |
classNames), | classNames), |
handler) |
handler); |
| |
// | // |
// Decrement count of current subscriptions for this provider | // Decrement count of current subscriptions for this provider |
|
|
providerContext.insert(request->operationContext.get( | providerContext.insert(request->operationContext.get( |
ContentLanguageListContainer::NAME)); | ContentLanguageListContainer::NAME)); |
| |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
|
|
|
CIMIndicationConsumerProvider* provider = | CIMIndicationConsumerProvider* provider = |
getProviderInterface<CIMIndicationConsumerProvider>(_provider); | getProviderInterface<CIMIndicationConsumerProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.consumeIndication: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); | StatProviderTimeMeasurement providerTime(response.get()); |
| |
HANDLE_PROVIDER_EXCEPTION( |
HANDLE_PROVIDER_CALL( |
|
consumeIndication, |
provider->consumeIndication( | provider->consumeIndication( |
providerContext, | providerContext, |
request->destinationPath, | request->destinationPath, |
request->indicationInstance), | request->indicationInstance), |
handler) |
handler); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return response.release(); | return response.release(); |
|
|
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Calling provider.enableIndications: " + _name); |
"Calling provider.enableIndications: %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
| |
|
try |
|
{ |
provider->enableIndications(*indicationResponseHandler); | provider->enableIndications(*indicationResponseHandler); |
} | } |
catch (Exception& e) |
catch (...) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL1, |
"Exception: " + e.getMessage()); |
"Caught exception from provider %s " |
|
"enableIndications() method.", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
|
throw; |
|
} |
| |
|
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Returned from provider.enableIndications: %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
|
} |
|
catch (Exception& e) |
|
{ |
Logger::put_l(Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING, | Logger::put_l(Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING, |
|
MessageLoaderParms( |
"ProviderManager.Default.DefaultProviderManager." | "ProviderManager.Default.DefaultProviderManager." |
"ENABLE_INDICATIONS_FAILED", | "ENABLE_INDICATIONS_FAILED", |
"Failed to enable indications for provider $0: $1.", | "Failed to enable indications for provider $0: $1.", |
_name, e.getMessage()); |
_fullyQualifiedProviderName, e.getMessage())); |
} | } |
catch(...) | catch(...) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
|
"Unexpected error in _enableIndications"); |
|
|
|
Logger::put_l(Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING, | Logger::put_l(Logger::ERROR_LOG, System::CIMSERVER, Logger::WARNING, |
|
MessageLoaderParms( |
"ProviderManager.Default.DefaultProviderManager." | "ProviderManager.Default.DefaultProviderManager." |
"ENABLE_INDICATIONS_FAILED_UNKNOWN", | "ENABLE_INDICATIONS_FAILED_UNKNOWN", |
"Failed to enable indications for provider $0.", | "Failed to enable indications for provider $0.", |
_name); |
_fullyQualifiedProviderName)); |
} | } |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
|
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Calling provider.disableIndications: " + _name); |
"Calling provider.disableIndications: %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
| |
try | try |
{ | { |
|
|
} | } |
catch (...) | catch (...) |
{ | { |
PEG_TRACE_STRING(TRC_DISCARDED_DATA, Tracer::LEVEL2, |
PEG_TRACE((TRC_DISCARDED_DATA, Tracer::LEVEL1, |
"Caught exception from provider " + _name + |
"Caught exception from provider %s " |
" disableIndications() method."); |
"disableIndications() method.", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
|
throw; |
} | } |
| |
|
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Returned from provider.disableIndications: %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
|
|
status.setIndicationsEnabled(false); | status.setIndicationsEnabled(false); |
| |
status.resetSubscriptions(); | status.resetSubscriptions(); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Destroying indication response handler for " + _name); |
"Destroying indication response handler for %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
| |
delete _indicationResponseHandler; | delete _indicationResponseHandler; |
_indicationResponseHandler = 0; | _indicationResponseHandler = 0; |
|
|
} | } |
catch(...) | catch(...) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL3, |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL3, |
"Error occured disabling indications in provider " + _name); |
"Error occured disabling indications in provider %s", |
|
(const char*)_fullyQualifiedProviderName.getCString())); |
} | } |
|
PEG_METHOD_EXIT(); |
} | } |
|
|
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |