cimoperationrequestencoder.cpp
来自「Pegasus is an open-source implementation」· C++ 代码 · 共 931 行 · 第 1/3 页
CPP
931 行
//%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/Config.h>#include <iostream>#include <Pegasus/Common/Constants.h>#include <Pegasus/Common/XmlWriter.h>#include <Pegasus/Common/HTTPMessage.h>#include "CIMOperationRequestEncoder.h"PEGASUS_USING_STD;PEGASUS_NAMESPACE_BEGINCIMOperationRequestEncoder::CIMOperationRequestEncoder( MessageQueue* outputQueue, const String& hostName, ClientAuthenticator* authenticator, Uint32 showOutput) : MessageQueue(PEGASUS_QUEUENAME_OPREQENCODER), _outputQueue(outputQueue), _hostName(hostName.getCString()), _authenticator(authenticator), _showOutput(showOutput){ dataStore_prt=NULL;}CIMOperationRequestEncoder::~CIMOperationRequestEncoder(){}void CIMOperationRequestEncoder::handleEnqueue(){ Message* message = dequeue(); if (!message) return; _authenticator->setRequestMessage(message); switch (message->getType()) { case CIM_CREATE_CLASS_REQUEST_MESSAGE: _encodeCreateClassRequest( (CIMCreateClassRequestMessage*)message); break; case CIM_GET_CLASS_REQUEST_MESSAGE: _encodeGetClassRequest((CIMGetClassRequestMessage*)message); break; case CIM_MODIFY_CLASS_REQUEST_MESSAGE: _encodeModifyClassRequest( (CIMModifyClassRequestMessage*)message); break; case CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE: _encodeEnumerateClassNamesRequest( (CIMEnumerateClassNamesRequestMessage*)message); break; case CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE: _encodeEnumerateClassesRequest( (CIMEnumerateClassesRequestMessage*)message); break; case CIM_DELETE_CLASS_REQUEST_MESSAGE: _encodeDeleteClassRequest( (CIMDeleteClassRequestMessage*)message); break; case CIM_CREATE_INSTANCE_REQUEST_MESSAGE: _encodeCreateInstanceRequest( (CIMCreateInstanceRequestMessage*)message); break; case CIM_GET_INSTANCE_REQUEST_MESSAGE: _encodeGetInstanceRequest((CIMGetInstanceRequestMessage*)message); break; case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE: _encodeModifyInstanceRequest( (CIMModifyInstanceRequestMessage*)message); break; case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE: _encodeEnumerateInstanceNamesRequest( (CIMEnumerateInstanceNamesRequestMessage*)message); break; case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE: _encodeEnumerateInstancesRequest( (CIMEnumerateInstancesRequestMessage*)message); break; case CIM_DELETE_INSTANCE_REQUEST_MESSAGE: _encodeDeleteInstanceRequest( (CIMDeleteInstanceRequestMessage*)message); break; case CIM_SET_QUALIFIER_REQUEST_MESSAGE: _encodeSetQualifierRequest( (CIMSetQualifierRequestMessage*)message); break; case CIM_GET_QUALIFIER_REQUEST_MESSAGE: _encodeGetQualifierRequest( (CIMGetQualifierRequestMessage*)message); break; case CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE: _encodeEnumerateQualifiersRequest( (CIMEnumerateQualifiersRequestMessage*)message); break; case CIM_DELETE_QUALIFIER_REQUEST_MESSAGE: _encodeDeleteQualifierRequest( (CIMDeleteQualifierRequestMessage*)message); break; case CIM_REFERENCE_NAMES_REQUEST_MESSAGE: _encodeReferenceNamesRequest( (CIMReferenceNamesRequestMessage*)message); break; case CIM_REFERENCES_REQUEST_MESSAGE: _encodeReferencesRequest( (CIMReferencesRequestMessage*)message); break; case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE: _encodeAssociatorNamesRequest( (CIMAssociatorNamesRequestMessage*)message); break; case CIM_ASSOCIATORS_REQUEST_MESSAGE: _encodeAssociatorsRequest( (CIMAssociatorsRequestMessage*)message); break; case CIM_EXEC_QUERY_REQUEST_MESSAGE: _encodeExecQueryRequest( (CIMExecQueryRequestMessage*)message); break; case CIM_GET_PROPERTY_REQUEST_MESSAGE: _encodeGetPropertyRequest((CIMGetPropertyRequestMessage*)message); break; case CIM_SET_PROPERTY_REQUEST_MESSAGE: _encodeSetPropertyRequest((CIMSetPropertyRequestMessage*)message); break; case CIM_INVOKE_METHOD_REQUEST_MESSAGE: _encodeInvokeMethodRequest( (CIMInvokeMethodRequestMessage*)message); break; } //ATTN: Do not delete the message here. // // ClientAuthenticator needs this message for resending the request on // authentication challenge from the server. The message is deleted in // the decoder after receiving the valid response from thr server. // //delete message;}void CIMOperationRequestEncoder::setDataStorePointer( ClientPerfDataStore* perfDataStore_ptr){ dataStore_prt = perfDataStore_ptr;}// l10n Added accept language and content language support starting herevoid CIMOperationRequestEncoder::_encodeCreateClassRequest( CIMCreateClassRequestMessage* message){ Buffer params; XmlWriter::appendClassIParameter(params, "NewClass", message->newClass); Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage( _hostName, message->nameSpace, CIMName ("CreateClass"), message->messageId, message->getHttpMethod(), _authenticator->buildRequestAuthHeader(), ((AcceptLanguageListContainer)message->operationContext.get( AcceptLanguageListContainer::NAME)).getLanguages(), ((ContentLanguageListContainer)message->operationContext.get( ContentLanguageListContainer::NAME)).getLanguages(), params); _sendRequest(buffer);}void CIMOperationRequestEncoder::_encodeGetClassRequest( CIMGetClassRequestMessage* message){ Buffer params; XmlWriter::appendClassNameIParameter( params, "ClassName", message->className); if (message->localOnly != true) XmlWriter::appendBooleanIParameter(params, "LocalOnly", false); if (message->includeQualifiers != true) XmlWriter::appendBooleanIParameter(params, "IncludeQualifiers", false); if (message->includeClassOrigin != false) XmlWriter::appendBooleanIParameter(params, "IncludeClassOrigin", true); if (!message->propertyList.isNull()) XmlWriter::appendPropertyListIParameter( params, message->propertyList); Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage( _hostName, message->nameSpace, CIMName ("GetClass"), message->messageId, message->getHttpMethod(), _authenticator->buildRequestAuthHeader(), ((AcceptLanguageListContainer)message->operationContext.get( AcceptLanguageListContainer::NAME)).getLanguages(), ((ContentLanguageListContainer)message->operationContext.get( ContentLanguageListContainer::NAME)).getLanguages(), params); _sendRequest(buffer);}void CIMOperationRequestEncoder::_encodeModifyClassRequest( CIMModifyClassRequestMessage* message){ Buffer params; XmlWriter::appendClassIParameter( params, "ModifiedClass", message->modifiedClass); Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName, message->nameSpace, CIMName ("ModifyClass"), message->messageId, message->getHttpMethod(), _authenticator->buildRequestAuthHeader(), ((AcceptLanguageListContainer)message->operationContext.get( AcceptLanguageListContainer::NAME)).getLanguages(), ((ContentLanguageListContainer)message->operationContext.get( ContentLanguageListContainer::NAME)).getLanguages(), params); _sendRequest(buffer);}void CIMOperationRequestEncoder::_encodeEnumerateClassNamesRequest( CIMEnumerateClassNamesRequestMessage* message){ Buffer params; if (!message->className.isNull()) XmlWriter::appendClassNameIParameter( params, "ClassName", message->className); if (message->deepInheritance != false) XmlWriter::appendBooleanIParameter(params, "DeepInheritance", true); Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName, message->nameSpace, CIMName ("EnumerateClassNames"), message->messageId, message->getHttpMethod(), _authenticator->buildRequestAuthHeader(), ((AcceptLanguageListContainer)message->operationContext.get( AcceptLanguageListContainer::NAME)).getLanguages(), ((ContentLanguageListContainer)message->operationContext.get( ContentLanguageListContainer::NAME)).getLanguages(), params); _sendRequest(buffer);}void CIMOperationRequestEncoder::_encodeEnumerateClassesRequest( CIMEnumerateClassesRequestMessage* message){ Buffer params;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?