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

📄 cimmessageserializer.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 4 页
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// 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 <Pegasus/Common/XmlWriter.h>#include <Pegasus/Common/OperationContextInternal.h>#include "CIMMessageSerializer.h"PEGASUS_NAMESPACE_BEGINvoid CIMMessageSerializer::serialize(Buffer& out, CIMMessage* cimMessage){    if (cimMessage == 0)    {        // No message to serialize        return;    }    // ATTN: Need to serialize the Message class members?    XmlWriter::append(out, "<PGMESSAGE ID=\"");    XmlWriter::append(out, cimMessage->messageId);    XmlWriter::append(out, "\" TYPE=\"");    XmlWriter::append(out, cimMessage->getType());    XmlWriter::append(out, "\">");#ifndef PEGASUS_DISABLE_PERFINST    // Serialize the statistics data    XmlWriter::appendValueElement(        out, cimMessage->getServerStartTime());    XmlWriter::appendValueElement(        out, cimMessage->getProviderTime());#endif    XmlWriter::appendValueElement(out, cimMessage->isComplete());    XmlWriter::appendValueElement(out, cimMessage->getIndex());    _serializeOperationContext(out, cimMessage->operationContext);    CIMRequestMessage* cimReqMessage;    cimReqMessage = dynamic_cast<CIMRequestMessage*>(cimMessage);    CIMResponseMessage* cimRespMessage;    cimRespMessage = dynamic_cast<CIMResponseMessage*>(cimMessage);    if (cimReqMessage)    {        _serializeCIMRequestMessage(out, cimReqMessage);    }    else    {        PEGASUS_ASSERT(cimRespMessage != 0);        _serializeCIMResponseMessage(out, cimRespMessage);    }    XmlWriter::append(out, "</PGMESSAGE>");}//// _serializeCIMRequestMessage//void CIMMessageSerializer::_serializeCIMRequestMessage(    Buffer& out,    CIMRequestMessage* cimMessage){    PEGASUS_ASSERT(cimMessage != 0);    XmlWriter::append(out, "<PGREQ>");    _serializeQueueIdStack(out, cimMessage->queueIds);    CIMOperationRequestMessage* cimOpReqMessage;    cimOpReqMessage = dynamic_cast<CIMOperationRequestMessage*>(cimMessage);    CIMIndicationRequestMessage* cimIndReqMessage;    cimIndReqMessage = dynamic_cast<CIMIndicationRequestMessage*>(cimMessage);    if (cimOpReqMessage)    {        XmlWriter::append(out, "<PGOPREQ>\n");        _serializeUserInfo(            out, cimOpReqMessage->authType, cimOpReqMessage->userName);        _serializeCIMNamespaceName(out, cimOpReqMessage->nameSpace);        _serializeCIMName(out, cimOpReqMessage->className);        // Encode cimOpReqMessage->providerType as an integer        XmlWriter::appendValueElement(out, cimOpReqMessage->providerType);        switch (cimMessage->getType())        {        // A provider cannot implement these operation types, so the        // serialization of these messages is not implemented.        //case CIM_GET_CLASS_REQUEST_MESSAGE:        //case CIM_DELETE_CLASS_REQUEST_MESSAGE:        //case CIM_CREATE_CLASS_REQUEST_MESSAGE:        //case CIM_MODIFY_CLASS_REQUEST_MESSAGE:        //case CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE:        //case CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE:        //case CIM_GET_QUALIFIER_REQUEST_MESSAGE:        //case CIM_SET_QUALIFIER_REQUEST_MESSAGE:        //case CIM_DELETE_QUALIFIER_REQUEST_MESSAGE:        //case CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE:        // Instance operations        case CIM_GET_INSTANCE_REQUEST_MESSAGE:            _serializeCIMGetInstanceRequestMessage(                out, (CIMGetInstanceRequestMessage*)cimMessage);            break;        case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:            _serializeCIMDeleteInstanceRequestMessage(                out, (CIMDeleteInstanceRequestMessage*)cimMessage);            break;        case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:            _serializeCIMCreateInstanceRequestMessage(                out, (CIMCreateInstanceRequestMessage*)cimMessage);            break;        case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:            _serializeCIMModifyInstanceRequestMessage(                out, (CIMModifyInstanceRequestMessage*)cimMessage);            break;        case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:            _serializeCIMEnumerateInstancesRequestMessage(                out, (CIMEnumerateInstancesRequestMessage*)cimMessage);            break;        case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:            _serializeCIMEnumerateInstanceNamesRequestMessage(                out, (CIMEnumerateInstanceNamesRequestMessage*)cimMessage);            break;        case CIM_EXEC_QUERY_REQUEST_MESSAGE:            _serializeCIMExecQueryRequestMessage(                out, (CIMExecQueryRequestMessage*)cimMessage);            break;        // Property operations        case CIM_GET_PROPERTY_REQUEST_MESSAGE:            _serializeCIMGetPropertyRequestMessage(                out, (CIMGetPropertyRequestMessage*)cimMessage);            break;        case CIM_SET_PROPERTY_REQUEST_MESSAGE:            _serializeCIMSetPropertyRequestMessage(                out, (CIMSetPropertyRequestMessage*)cimMessage);            break;        // Association operations        case CIM_ASSOCIATORS_REQUEST_MESSAGE:            _serializeCIMAssociatorsRequestMessage(                out, (CIMAssociatorsRequestMessage*)cimMessage);            break;        case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:            _serializeCIMAssociatorNamesRequestMessage(                out, (CIMAssociatorNamesRequestMessage*)cimMessage);            break;        case CIM_REFERENCES_REQUEST_MESSAGE:            _serializeCIMReferencesRequestMessage(                out, (CIMReferencesRequestMessage*)cimMessage);            break;        case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:            _serializeCIMReferenceNamesRequestMessage(                out, (CIMReferenceNamesRequestMessage*)cimMessage);            break;        // Method operations        case CIM_INVOKE_METHOD_REQUEST_MESSAGE:            _serializeCIMInvokeMethodRequestMessage(                out, (CIMInvokeMethodRequestMessage*)cimMessage);            break;        default:            PEGASUS_ASSERT(0);        }        XmlWriter::append(out, "</PGOPREQ>");    }    else if (cimIndReqMessage)    {        XmlWriter::append(out, "<PGINDREQ>");        _serializeUserInfo(            out, cimIndReqMessage->authType, cimIndReqMessage->userName);        switch (cimMessage->getType())        {        case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE:            _serializeCIMCreateSubscriptionRequestMessage(                out, (CIMCreateSubscriptionRequestMessage*)cimMessage);            break;        case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE:            _serializeCIMModifySubscriptionRequestMessage(                out, (CIMModifySubscriptionRequestMessage*)cimMessage);            break;        case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE:            _serializeCIMDeleteSubscriptionRequestMessage(                out, (CIMDeleteSubscriptionRequestMessage*)cimMessage);            break;        default:            PEGASUS_ASSERT(0);        }        XmlWriter::append(out, "</PGINDREQ>");    }    else    // Other message types    {        XmlWriter::append(out, "<PGOTHERREQ>");        switch (cimMessage->getType())        {        case CIM_EXPORT_INDICATION_REQUEST_MESSAGE:            _serializeCIMExportIndicationRequestMessage(                out, (CIMExportIndicationRequestMessage*)cimMessage);            break;        case CIM_PROCESS_INDICATION_REQUEST_MESSAGE:            _serializeCIMProcessIndicationRequestMessage(                out, (CIMProcessIndicationRequestMessage*)cimMessage);            break;        //case CIM_NOTIFY_PROVIDER_REGISTRATION_REQUEST_MESSAGE:            // ATTN: No need to serialize this yet            //_serializeCIMNotifyProviderRegistrationRequestMessage(            //    out,            //    (CIMNotifyProviderRegistrationRequestMessage*)cimMessage);            break;        //case CIM_NOTIFY_PROVIDER_TERMINATION_REQUEST_MESSAGE:            // ATTN: No need to serialize this yet            //_serializeCIMNotifyProviderTerminationRequestMessage(            //    out, (CIMNotifyProviderTerminationRequestMessage*)cimMessage);            break;        //case CIM_HANDLE_INDICATION_REQUEST_MESSAGE:            // ATTN: No need to serialize this yet            //_serializeCIMHandleIndicationRequestMessage(            //    out, (CIMHandleIndicationRequestMessage*)cimMessage);            break;        case CIM_DISABLE_MODULE_REQUEST_MESSAGE:            _serializeCIMDisableModuleRequestMessage(                out, (CIMDisableModuleRequestMessage*)cimMessage);            break;        case CIM_ENABLE_MODULE_REQUEST_MESSAGE:            _serializeCIMEnableModuleRequestMessage(                out, (CIMEnableModuleRequestMessage*)cimMessage);            break;        //case CIM_NOTIFY_PROVIDER_ENABLE_REQUEST_MESSAGE:            // ATTN: No need to serialize this yet            //_serializeCIMNotifyProviderEnableRequestMessage(            //    out, (CIMNotifyProviderEnableRequestMessage*)cimMessage);            break;        //case CIM_NOTIFY_PROVIDER_FAIL_REQUEST_MESSAGE:            // ATTN: No need to serialize this yet            //_serializeCIMNotifyProviderFailRequestMessage(            //    out, (CIMNotifyProviderFailRequestMessage*)cimMessage);            //break;        case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE:            _serializeCIMStopAllProvidersRequestMessage(                out, (CIMStopAllProvidersRequestMessage*)cimMessage);            break;        case CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE:            _serializeCIMInitializeProviderRequestMessage(                out, (CIMInitializeProviderRequestMessage*)cimMessage);            break;        case CIM_INITIALIZE_PROVIDER_AGENT_REQUEST_MESSAGE:            _serializeCIMInitializeProviderAgentRequestMessage(                out, (CIMInitializeProviderAgentRequestMessage*)cimMessage);            break;        case CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE:            _serializeCIMNotifyConfigChangeRequestMessage(                out, (CIMNotifyConfigChangeRequestMessage*)cimMessage);            break;        case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE:            _serializeCIMSubscriptionInitCompleteRequestMessage(                out,                (CIMSubscriptionInitCompleteRequestMessage *)                cimMessage);            break;        default:            PEGASUS_ASSERT(0);        }        XmlWriter::append(out, "</PGOTHERREQ>");    }    XmlWriter::append(out, "</PGREQ>");}//// _serializeCIMResponseMessage//void CIMMessageSerializer::_serializeCIMResponseMessage(    Buffer& out,    CIMResponseMessage* cimMessage){    PEGASUS_ASSERT(cimMessage != 0);    XmlWriter::append(out, "<PGRESP>\n");    _serializeQueueIdStack(out, cimMessage->queueIds);    _serializeCIMException(out, cimMessage->cimException);    switch (cimMessage->getType())    {        //        // CIM Operation Response Messages        //        // A provider cannot implement these operation types, so the        // serialization of these messages is not implemented.        //case CIM_GET_CLASS_RESPONSE_MESSAGE:        //case CIM_DELETE_CLASS_RESPONSE_MESSAGE:        //case CIM_CREATE_CLASS_RESPONSE_MESSAGE:        //case CIM_MODIFY_CLASS_RESPONSE_MESSAGE:        //case CIM_ENUMERATE_CLASSES_RESPONSE_MESSAGE:        //case CIM_ENUMERATE_CLASS_NAMES_RESPONSE_MESSAGE:        //case CIM_GET_QUALIFIER_RESPONSE_MESSAGE:        //case CIM_SET_QUALIFIER_RESPONSE_MESSAGE:        //case CIM_DELETE_QUALIFIER_RESPONSE_MESSAGE:        //case CIM_ENUMERATE_QUALIFIERS_RESPONSE_MESSAGE:        // Instance operations        case CIM_GET_INSTANCE_RESPONSE_MESSAGE:            _serializeCIMGetInstanceResponseMessage(                out, (CIMGetInstanceResponseMessage*)cimMessage);            break;        case CIM_DELETE_INSTANCE_RESPONSE_MESSAGE:            _serializeCIMDeleteInstanceResponseMessage(                out, (CIMDeleteInstanceResponseMessage*)cimMessage);            break;        case CIM_CREATE_INSTANCE_RESPONSE_MESSAGE:            _serializeCIMCreateInstanceResponseMessage(                out, (CIMCreateInstanceResponseMessage*)cimMessage);            break;        case CIM_MODIFY_INSTANCE_RESPONSE_MESSAGE:            _serializeCIMModifyInstanceResponseMessage(                out, (CIMModifyInstanceResponseMessage*)cimMessage);            break;        case CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:            _serializeCIMEnumerateInstancesResponseMessage(                out, (CIMEnumerateInstancesResponseMessage*)cimMessage);            break;        case CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE:            _serializeCIMEnumerateInstanceNamesResponseMessage(                out, (CIMEnumerateInstanceNamesResponseMessage*)cimMessage);            break;        case CIM_EXEC_QUERY_RESPONSE_MESSAGE:            _serializeCIMExecQueryResponseMessage(                out, (CIMExecQueryResponseMessage*)cimMessage);            break;        // Property operations        case CIM_GET_PROPERTY_RESPONSE_MESSAGE:            _serializeCIMGetPropertyResponseMessage(                out, (CIMGetPropertyResponseMessage*)cimMessage);            break;        case CIM_SET_PROPERTY_RESPONSE_MESSAGE:            _serializeCIMSetPropertyResponseMessage(                out, (CIMSetPropertyResponseMessage*)cimMessage);            break;        // Association operations        case CIM_ASSOCIATORS_RESPONSE_MESSAGE:            _serializeCIMAssociatorsResponseMessage(                out, (CIMAssociatorsResponseMessage*)cimMessage);            break;        case CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE:            _serializeCIMAssociatorNamesResponseMessage(                out, (CIMAssociatorNamesResponseMessage*)cimMessage);            break;        case CIM_REFERENCES_RESPONSE_MESSAGE:            _serializeCIMReferencesResponseMessage(                out, (CIMReferencesResponseMessage*)cimMessage);            break;        case CIM_REFERENCE_NAMES_RESPONSE_MESSAGE:            _serializeCIMReferenceNamesResponseMessage(

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -