tdaq-develop-2025-02-12
SOAPCommand.cc
1 #include "otsdaq/SOAPUtilities/SOAPCommand.h"
2 #include "otsdaq/Macros/CoutMacros.h"
3 #include "otsdaq/MessageFacility/MessageFacility.h"
4 
5 #include <xoap/SOAPElement.h>
6 #include <xoap/SOAPEnvelope.h>
7 #include <xoap/domutils.h>
8 
9 #include <iostream>
10 
11 using namespace ots;
12 
13 //==============================================================================
14 SOAPCommand::SOAPCommand(void) {}
15 
16 //==============================================================================
17 SOAPCommand::SOAPCommand(const xoap::MessageReference& message) { translate(message); }
18 
19 //==============================================================================
20 SOAPCommand::SOAPCommand(std::string command) : command_(command) {}
21 //==============================================================================
22 SOAPCommand::SOAPCommand(std::string command, SOAPParameters parameters)
23  : command_(command), parameters_(parameters)
24 {
25 }
26 
27 //==============================================================================
28 SOAPCommand::SOAPCommand(std::string command, SOAPParameter parameter)
29  : command_(command), parameters_(parameter)
30 {
31 }
32 
33 //==============================================================================
34 SOAPCommand::~SOAPCommand(void) {}
35 
37 //==============================================================================
39 //{
40 // FIXME
41 //}
42 
43 //==============================================================================
44 const std::string& SOAPCommand::getCommand(void) const { return command_; }
45 
46 //==============================================================================
47 const SOAPParameters& SOAPCommand::getParameters(void) const { return parameters_; }
48 
49 SOAPParameters& SOAPCommand::getParametersRef() { return parameters_; }
50 
51 //==============================================================================
52 std::string SOAPCommand::getParameterValue(std::string parameterName) const
53 {
54  SOAPParameters::const_iterator it;
55  if((it = parameters_.find(parameterName)) != parameters_.end())
56  return it->second;
57  return "";
58 }
59 
60 //==============================================================================
61 unsigned int SOAPCommand::getParametersSize(void) const { return parameters_.size(); }
63 //==============================================================================
64 void SOAPCommand::translate(const xoap::MessageReference& message)
65 {
66  // A SOAP message can ONLY have 1 command so we get the .begin() of the vector of
67  // commands
68  xoap::SOAPElement messageCommand =
69  *(message->getSOAPPart().getEnvelope().getBody().getChildElements().begin());
70  command_ = messageCommand.getElementName().getLocalName();
71  DOMNamedNodeMap* parameters = messageCommand.getDOM()->getAttributes();
72  for(unsigned int i = 0; i < parameters->getLength(); i++)
73  {
74  parameters_.addParameter(xoap::XMLCh2String(parameters->item(i)->getNodeName()),
75  xoap::XMLCh2String(parameters->item(i)->getNodeValue()));
76  }
77 }
78 
79 //==============================================================================
80 void SOAPCommand::setCommand(std::string command) { command_ = command; }
81 
82 //==============================================================================
83 void SOAPCommand::setParameters(const SOAPParameters& parameters)
84 {
85  parameters_ = parameters;
86 }
87 
88 //==============================================================================
89 void SOAPCommand::setParameter(std::string parameterName, std::string parameterValue)
90 {
91  parameters_.addParameter(parameterName, parameterValue);
92 }
93 
94 //==============================================================================
95 void SOAPCommand::setParameter(const SOAPParameter parameter)
96 {
97  parameters_.addParameter(parameter.getName(), parameter.getValue());
98 }
99 
100 //==============================================================================
101 bool SOAPCommand::hasParameters(void) const { return (parameters_.size() != 0); }
102 
103 //==============================================================================
104 bool SOAPCommand::findParameter(std::string parameterName) const
105 {
106  return (parameters_.find(parameterName) != parameters_.end());
107 }
108 
109 //==============================================================================
110 namespace ots
111 {
112 std::ostream& operator<<(std::ostream& os, const SOAPCommand& c)
113 {
114  os << "Command: " << c.getCommand();
115  unsigned int p = 0;
116  for(SOAPParameters::const_iterator it = (c.getParameters()).begin();
117  it != (c.getParameters()).end();
118  it++)
119  os << " Par " << p << " Name: " << it->first << " Value: " << it->second << ",";
120  return os;
121 }
122 } // namespace ots
const N & getName(void) const
Getters.
Definition: DataStructs.h:18
unsigned int size(void) const
Methods.
Definition: DataStructs.h:99
const std::string & getCommand(void) const
Getters.
Definition: SOAPCommand.cc:44
void translate(const xoap::MessageReference &message)
Setters.
Definition: SOAPCommand.cc:64
std::ostream & operator<<(std::ostream &, UDPFragment const &)
Let the "<<" operator dump the UDPFragment's data to stdout.
Definition: UDPFragment.cc:3