$treeview $search $mathjax $extrastylesheet
otsdaq
v2_03_00
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #include "otsdaq-core/SOAPUtilities/SOAPCommand.h" 00002 #include "otsdaq-core/Macros/CoutMacros.h" 00003 #include "otsdaq-core/MessageFacility/MessageFacility.h" 00004 00005 #include <xoap/SOAPElement.h> 00006 #include <xoap/SOAPEnvelope.h> 00007 #include <xoap/domutils.h> 00008 00009 #include <iostream> 00010 00011 using namespace ots; 00012 00013 //======================================================================================================================== 00014 SOAPCommand::SOAPCommand(void) {} 00015 00016 //======================================================================================================================== 00017 SOAPCommand::SOAPCommand(const xoap::MessageReference& message) { translate(message); } 00018 00019 //======================================================================================================================== 00020 SOAPCommand::SOAPCommand(std::string command) : command_(command) {} 00021 //======================================================================================================================== 00022 SOAPCommand::SOAPCommand(std::string command, SOAPParameters parameters) 00023 : command_(command), parameters_(parameters) 00024 { 00025 } 00026 00027 //======================================================================================================================== 00028 SOAPCommand::SOAPCommand(std::string command, SOAPParameter parameter) 00029 : command_(command), parameters_(parameter) 00030 { 00031 } 00032 00033 //======================================================================================================================== 00034 SOAPCommand::~SOAPCommand(void) {} 00035 00036 // Getters 00037 //======================================================================================================================== 00038 // const xoap::MessageReference SOAPCommand::translate(void) 00039 //{ 00040 // FIXME 00041 //} 00042 00043 //======================================================================================================================== 00044 const std::string& SOAPCommand::getCommand(void) const { return command_; } 00045 00046 //======================================================================================================================== 00047 const SOAPParameters& SOAPCommand::getParameters(void) const { return parameters_; } 00048 00049 SOAPParameters& SOAPCommand::getParametersRef() { return parameters_; } 00050 00051 //======================================================================================================================== 00052 std::string SOAPCommand::getParameterValue(std::string parameterName) const 00053 { 00054 SOAPParameters::const_iterator it; 00055 if((it = parameters_.find(parameterName)) != parameters_.end()) 00056 return it->second; 00057 return ""; 00058 } 00059 00060 //======================================================================================================================== 00061 unsigned int SOAPCommand::getParametersSize(void) const { return parameters_.size(); } 00062 // Setters 00063 //======================================================================================================================== 00064 void SOAPCommand::translate(const xoap::MessageReference& message) 00065 { 00066 // A SOAP message can ONLY have 1 command so we get the .begin() of the vector of 00067 // commands 00068 xoap::SOAPElement messageCommand = 00069 *(message->getSOAPPart().getEnvelope().getBody().getChildElements().begin()); 00070 command_ = messageCommand.getElementName().getLocalName(); 00071 DOMNamedNodeMap* parameters = messageCommand.getDOM()->getAttributes(); 00072 for(unsigned int i = 0; i < parameters->getLength(); i++) 00073 { 00074 parameters_.addParameter(xoap::XMLCh2String(parameters->item(i)->getNodeName()), 00075 xoap::XMLCh2String(parameters->item(i)->getNodeValue())); 00076 } 00077 } 00078 00079 //======================================================================================================================== 00080 void SOAPCommand::setCommand(std::string command) { command_ = command; } 00081 00082 //======================================================================================================================== 00083 void SOAPCommand::setParameters(const SOAPParameters& parameters) 00084 { 00085 parameters_ = parameters; 00086 } 00087 00088 //======================================================================================================================== 00089 void SOAPCommand::setParameter(std::string parameterName, std::string parameterValue) 00090 { 00091 parameters_.addParameter(parameterName, parameterValue); 00092 } 00093 00094 //======================================================================================================================== 00095 void SOAPCommand::setParameter(const SOAPParameter parameter) 00096 { 00097 parameters_.addParameter(parameter.getName(), parameter.getValue()); 00098 } 00099 00100 //======================================================================================================================== 00101 bool SOAPCommand::hasParameters(void) const { return (parameters_.size() != 0); } 00102 00103 //======================================================================================================================== 00104 bool SOAPCommand::findParameter(std::string parameterName) const 00105 { 00106 return (parameters_.find(parameterName) != parameters_.end()); 00107 } 00108 00109 //======================================================================================================================== 00110 namespace ots 00111 { 00112 std::ostream& operator<<(std::ostream& os, const SOAPCommand& c) 00113 { 00114 os << "Command: " << c.getCommand(); 00115 unsigned int p = 0; 00116 for(SOAPParameters::const_iterator it = (c.getParameters()).begin(); 00117 it != (c.getParameters()).end(); 00118 it++) 00119 os << " Par " << p << " Name: " << it->first << " Value: " << it->second << ","; 00120 return os; 00121 } 00122 } // namespace ots