📄 providermessagehandler.cpp
字号:
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderMessageHandler::_handleReferencesRequest"); CIMReferencesRequestMessage* request = dynamic_cast<CIMReferencesRequestMessage*>(message); PEGASUS_ASSERT(request != 0); AutoPtr<CIMReferencesResponseMessage> response( dynamic_cast<CIMReferencesResponseMessage*>( request->buildResponse())); PEGASUS_ASSERT(response.get() != 0); // create a handler for this request ReferencesResponseHandler handler( request, response.get(), _responseChunkCallback); // make target object path CIMObjectPath objectPath( System::getHostName(), request->nameSpace, request->objectName.getClassName()); objectPath.setKeyBindings(request->objectName.getKeyBindings()); PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "ProviderMessageHandler::_handleReferencesRequest - " "Object path: $0", objectPath.toString())); CIMObjectPath resultPath( System::getHostName(), request->nameSpace, request->resultClass.getString()); OperationContext providerContext( _createProviderOperationContext(request->operationContext)); AutoPThreadSecurity threadLevelSecurity(providerContext); CIMAssociationProvider* provider = getProviderInterface<CIMAssociationProvider>(_provider); PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.references: " + _name); StatProviderTimeMeasurement providerTime(response.get()); HANDLE_PROVIDER_EXCEPTION( provider->references( providerContext, objectPath, request->resultClass, request->role, request->includeQualifiers, request->includeClassOrigin, request->propertyList, handler), handler) PEG_METHOD_EXIT(); return response.release();}CIMResponseMessage* ProviderMessageHandler::_handleReferenceNamesRequest( CIMRequestMessage* message){ PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderMessageHandler::_handleReferenceNamesRequest"); CIMReferenceNamesRequestMessage* request = dynamic_cast<CIMReferenceNamesRequestMessage*>(message); PEGASUS_ASSERT(request != 0); AutoPtr<CIMReferenceNamesResponseMessage> response( dynamic_cast<CIMReferenceNamesResponseMessage*>( request->buildResponse())); PEGASUS_ASSERT(response.get() != 0); // create a handler for this request ReferenceNamesResponseHandler handler( request, response.get(), _responseChunkCallback); // make target object path CIMObjectPath objectPath( System::getHostName(), request->nameSpace, request->objectName.getClassName()); objectPath.setKeyBindings(request->objectName.getKeyBindings()); PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "ProviderMessageHandler::_handleReferenceNamesRequest - " "Object path: $0", objectPath.toString())); CIMObjectPath resultPath( System::getHostName(), request->nameSpace, request->resultClass.getString()); OperationContext providerContext( _createProviderOperationContext(request->operationContext)); AutoPThreadSecurity threadLevelSecurity(providerContext); CIMAssociationProvider* provider = getProviderInterface<CIMAssociationProvider>(_provider); PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.referenceNames: " + _name); StatProviderTimeMeasurement providerTime(response.get()); HANDLE_PROVIDER_EXCEPTION( provider->referenceNames( providerContext, objectPath, request->resultClass, request->role, handler), handler) PEG_METHOD_EXIT(); return response.release();}CIMResponseMessage* ProviderMessageHandler::_handleGetPropertyRequest( CIMRequestMessage* message){ PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderMessageHandler::_handleGetPropertyRequest"); CIMGetPropertyRequestMessage* request = dynamic_cast<CIMGetPropertyRequestMessage*>(message); PEGASUS_ASSERT(request != 0); AutoPtr<CIMGetPropertyResponseMessage> response( dynamic_cast<CIMGetPropertyResponseMessage*>( request->buildResponse())); PEGASUS_ASSERT(response.get() != 0); // // Translate the GetProperty request to a GetInstance request message // Array<CIMName> propertyList; propertyList.append(request->propertyName); CIMGetInstanceRequestMessage getInstanceRequest( request->messageId, request->nameSpace, request->instanceName, false, // localOnly false, // includeQualifiers false, // includeClassOrigin propertyList, request->queueIds); getInstanceRequest.operationContext = request->operationContext; AutoPtr<CIMGetInstanceResponseMessage> getInstanceResponse( dynamic_cast<CIMGetInstanceResponseMessage*>( getInstanceRequest.buildResponse())); PEGASUS_ASSERT(getInstanceResponse.get() != 0); // // Process the GetInstance operation // // create a handler for this request (with chunking disabled) GetInstanceResponseHandler handler( &getInstanceRequest, getInstanceResponse.get(), 0); // make target object path CIMObjectPath objectPath( System::getHostName(), getInstanceRequest.nameSpace, getInstanceRequest.instanceName.getClassName(), getInstanceRequest.instanceName.getKeyBindings()); PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "ProviderMessageHandler::_handleGetPropertyRequest - " "Object path: $0, Property: $1", objectPath.toString(), request->propertyName.getString())); OperationContext providerContext( _createProviderOperationContext(getInstanceRequest.operationContext)); AutoPThreadSecurity threadLevelSecurity(providerContext); CIMInstanceProvider* provider = getProviderInterface<CIMInstanceProvider>(_provider); PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.getInstance: " + _name); StatProviderTimeMeasurement providerTime(response.get()); HANDLE_PROVIDER_EXCEPTION( provider->getInstance( providerContext, objectPath, getInstanceRequest.includeQualifiers, getInstanceRequest.includeClassOrigin, getInstanceRequest.propertyList, handler), handler) // // Copy the GetInstance response into the GetProperty response message // response->cimException = getInstanceResponse->cimException; if (response->cimException.getCode() == CIM_ERR_SUCCESS) { CIMInstance instance = getInstanceResponse->cimInstance; Uint32 pos = instance.findProperty(request->propertyName); if (pos != PEG_NOT_FOUND) { response->value = instance.getProperty(pos).getValue(); } else // Property not found. Return CIM_ERR_NO_SUCH_PROPERTY. { response->cimException = PEGASUS_CIM_EXCEPTION( CIM_ERR_NO_SUCH_PROPERTY, request->propertyName.getString()); } } response->operationContext = getInstanceResponse->operationContext; PEG_METHOD_EXIT(); return response.release();}CIMResponseMessage* ProviderMessageHandler::_handleSetPropertyRequest( CIMRequestMessage* message){ PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderMessageHandler::_handleSetPropertyRequest"); CIMSetPropertyRequestMessage* request = dynamic_cast<CIMSetPropertyRequestMessage*>(message); PEGASUS_ASSERT(request != 0); AutoPtr<CIMSetPropertyResponseMessage> response( dynamic_cast<CIMSetPropertyResponseMessage*>( request->buildResponse())); PEGASUS_ASSERT(response.get() != 0); // // Translate the SetProperty request to a ModifyInstance request message // // make target object path CIMObjectPath objectPath( System::getHostName(), request->nameSpace, request->instanceName.getClassName(), request->instanceName.getKeyBindings()); CIMInstance instance(request->instanceName.getClassName()); instance.addProperty(CIMProperty( request->propertyName, request->newValue)); instance.setPath(objectPath); Array<CIMName> propertyList; propertyList.append(request->propertyName); CIMModifyInstanceRequestMessage modifyInstanceRequest( request->messageId, request->nameSpace, instance, false, // includeQualifiers propertyList, request->queueIds); modifyInstanceRequest.operationContext = request->operationContext; AutoPtr<CIMModifyInstanceResponseMessage> modifyInstanceResponse( dynamic_cast<CIMModifyInstanceResponseMessage*>( modifyInstanceRequest.buildResponse())); PEGASUS_ASSERT(modifyInstanceResponse.get() != 0); // // Process the ModifyInstance operation // // create a handler for this request (with chunking disabled) ModifyInstanceResponseHandler handler( &modifyInstanceRequest, modifyInstanceResponse.get(), 0); PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "ProviderMessageHandler::_handleSetPropertyRequest - " "Object path: $0, Property: $1", objectPath.toString(), request->propertyName.getString())); OperationContext providerContext( _createProviderOperationContext(request->operationContext)); AutoPThreadSecurity threadLevelSecurity(providerContext); CIMInstanceProvider* provider = getProviderInterface<CIMInstanceProvider>(_provider); PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.modifyInstance: " + _name); StatProviderTimeMeasurement providerTime(response.get()); HANDLE_PROVIDER_EXCEPTION( provider->modifyInstance( providerContext, objectPath, modifyInstanceRequest.modifiedInstance, modifyInstanceRequest.includeQualifiers, modifyInstanceRequest.propertyList, handler), handler) // // Copy the ModifyInstance response into the GetProperty response message // response->cimException = modifyInstanceResponse->cimException; response->operationContext = modifyInstanceResponse->operationContext; PEG_METHOD_EXIT(); return response.release();}CIMResponseMessage* ProviderMessageHandler::_handleInvokeMethodRequest( CIMRequestMessage* message){ PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderMessageHandler::_handleInvokeMethodRequest"); CIMInvokeMethodRequestMessage* request = dynamic_cast<CIMInvokeMethodRequestMessage*>(message); PEGASUS_ASSERT(request != 0); AutoPtr<CIMInvokeMethodResponseMessage> response( dynamic_cast<CIMInvokeMethodResponseMessage*>( request->buildResponse())); PEGASUS_ASSERT(response.get() != 0); // create a handler for this request InvokeMethodResponseHandler handler( request, response.get(), _responseChunkCallback); // make target object path CIMObjectPath objectPath( System::getHostName(), request->nameSpace, request->instanceName.getClassName(), request->instanceName.getKeyBindings()); PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, "ProviderMessageHandler::_handleInvokeMethodRequest - " "Object path: $0, Method: $1", objectPath.toString(), request->methodName.getString())); CIMObjectPath instanceReference(request->instanceName); instanceReference.setNameSpace(request->nameSpace); OperationContext providerContext( _createProviderOperationContext(request->operationContext)); AutoPThreadSecurity threadLevelSecurity(providerContext); CIMMethodProvider* provider = getProviderInterface<CIMMethodProvider>(_provider); PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.invokeMethod: " + _name); StatProviderTimeMeasurement providerTime(response.get()); HANDLE_PROVIDER_EXCEPTION( provider->invokeMethod( providerContext, instanceReference, request->methodName, request->inParameters, handler), handler) PEG_METHOD_EXIT(); return response.release();}CIMResponseMessage* ProviderMessageHandler::_handleCreateSubscriptionRequest( CIMRequestMessage* message){ PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderMessageHandler::_handleCreateSubscriptionRequest"); CIMCreateSubscriptionRequestMessage* request = dynamic_cast<CIMCreateSubscriptionRequestMessage*>(message); PEGASUS_ASSERT(request != 0); AutoPtr<CIMCreateSubscriptionResponseMessage> response( dynamic_cast<CIMCreateSubscriptionResponseMessage*>( request->buildResponse())); PEGASUS_ASSERT(response.get() != 0); OperationResponseHandler handler( request, response.get(), _responseChunkCallback); String temp; for (Uint32 i = 0, n = request->classNames.size(); i < n; i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -