⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 providermessagehandler.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    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 + -