1 #include "otsdaq/CoreSupervisors/FESupervisor.h"
2 #include "otsdaq/ConfigurationInterface/ConfigurationManager.h"
3 #include "otsdaq/FECore/FEVInterfacesManager.h"
5 #include "artdaq/DAQdata/Globals.hh"
36 __SUP_COUT__ <<
"Constructing..." << __E__;
39 &FESupervisor::macroMakerSupervisorRequest,
40 "MacroMakerSupervisorRequest",
44 this, &FESupervisor::workLoopStatusRequest,
"WorkLoopStatusRequest", XDAQ_NS_URI);
47 &FESupervisor::frontEndCommunicationRequest,
53 CoreSupervisorBase::theStateMachineImplementation_.push_back(
55 CorePropertySupervisorBase::getContextTreeNode(),
56 CorePropertySupervisorBase::getSupervisorConfigurationPath()));
60 if(CorePropertySupervisorBase::allSupervisorInfo_.isMacroMakerMode())
62 __SUP_COUT_WARN__ <<
"Error caught constructing FE Interface Manager. In "
63 "Macro Maker mode, the input fhicl defines the "
64 "configuration tree, make sure you specified a valid "
71 extractFEInterfacesManager();
73 __SUP_COUT__ <<
"Constructed." << __E__;
75 if(CorePropertySupervisorBase::allSupervisorInfo_.isMacroMakerMode())
77 __SUP_COUT_INFO__ <<
"Macro Maker mode, so configuring at startup!" << __E__;
78 if(!theFEInterfacesManager_)
80 __SUP_SS__ <<
"Missing FE Interface manager!" << __E__;
91 __SUP_COUT__ <<
"Configuring all state machine implementations..." << __E__;
92 preStateMachineExecutionLoop();
93 for(
unsigned int i = 0; i < theStateMachineImplementation_.size(); ++i)
96 if(subIterationWorkStateMachineIndex_ != (
unsigned int)-1 &&
97 i != subIterationWorkStateMachineIndex_)
100 if(stateMachinesIterationDone_[i])
103 preStateMachineExecution(i);
104 theStateMachineImplementation_[i]->parentSupervisor_ =
107 theStateMachineImplementation_[i]->configure();
110 postStateMachineExecution(i);
112 postStateMachineExecutionLoop();
114 catch(
const std::runtime_error& e)
116 __SUP_SS__ <<
"Error was caught while configuring: " << e.what() << __E__;
117 __SUP_COUT_ERR__ <<
"\n" << ss.str();
118 theStateMachine_.setErrorMessage(ss.str());
123 <<
"Unknown error was caught while configuring. Please checked the logs."
125 __SUP_COUT_ERR__ <<
"\n" << ss.str();
126 theStateMachine_.setErrorMessage(ss.str());
132 FESupervisor::~FESupervisor(
void)
134 __SUP_COUT__ <<
"Destroying..." << __E__;
138 artdaq::Globals::CleanUpGlobals();
140 __SUP_COUT__ <<
"Destructed." << __E__;
144 xoap::MessageReference FESupervisor::frontEndCommunicationRequest(
145 xoap::MessageReference message)
try
147 __SUP_COUT__ <<
"FE Request received: " << SOAPUtilities::translate(message) << __E__;
149 if(!theFEInterfacesManager_)
151 __SUP_SS__ <<
"No FE Interface Manager!" << __E__;
155 typeParameter.addParameter(
"type");
156 SOAPUtilities::receive(message, typeParameter);
158 std::string type = typeParameter.getValue(
"type");
168 rxParameters.addParameter(
"requester");
169 rxParameters.addParameter(
"targetInterfaceID");
175 rxParameters.addParameter(
"value");
176 SOAPUtilities::receive(message, rxParameters);
178 std::string requester = rxParameters.getValue(
"requester");
179 std::string targetInterfaceID = rxParameters.getValue(
"targetInterfaceID");
180 std::string value = rxParameters.getValue(
"value");
182 __SUP_COUTV__(requester);
183 __SUP_COUTV__(targetInterfaceID);
184 __SUP_COUTV__(value);
187 theFEInterfacesManager_->getFEInterface(targetInterfaceID);
191 std::lock_guard<std::mutex> lock(
192 theFEInterfacesManager_->frontEndCommunicationReceiveMutex_);
194 theFEInterfacesManager_
195 ->frontEndCommunicationReceiveBuffer_[targetInterfaceID][requester]
198 __SUP_COUT__ <<
"Number of target interface ID '" << targetInterfaceID
200 << theFEInterfacesManager_
201 ->frontEndCommunicationReceiveBuffer_[targetInterfaceID]
205 <<
"Number of source interface ID '" << requester <<
"' values received: "
206 << theFEInterfacesManager_
207 ->frontEndCommunicationReceiveBuffer_[targetInterfaceID][requester]
211 return SOAPUtilities::makeSOAPMessageReference(
"Received");
213 else if(type ==
"feMacro")
217 rxParameters.addParameter(
"feMacroName");
218 rxParameters.addParameter(
"inputArgs");
220 SOAPUtilities::receive(message, rxParameters);
222 std::string requester = rxParameters.getValue(
"requester");
223 std::string targetInterfaceID = rxParameters.getValue(
"targetInterfaceID");
224 std::string feMacroName = rxParameters.getValue(
"feMacroName");
225 std::string inputArgs = rxParameters.getValue(
"inputArgs");
227 __SUP_COUTV__(requester);
228 __SUP_COUTV__(targetInterfaceID);
229 __SUP_COUTV__(feMacroName);
230 __SUP_COUTV__(inputArgs);
232 std::string outputArgs;
235 theFEInterfacesManager_->runFEMacroByFE(
236 requester, targetInterfaceID, feMacroName, inputArgs, outputArgs);
238 catch(std::runtime_error& e)
240 __SUP_SS__ <<
"In Supervisor with LID="
241 << getApplicationDescriptor()->getLocalId()
242 <<
" the FE Macro named '" << feMacroName <<
"' with target FE '"
243 << targetInterfaceID <<
"' failed. Here is the error:\n\n"
244 << e.what() << __E__;
249 __SUP_SS__ <<
"In Supervisor with LID="
250 << getApplicationDescriptor()->getLocalId()
251 <<
" the FE Macro named '" << feMacroName <<
"' with target FE '"
252 << targetInterfaceID <<
"' failed due to an unknown error."
257 __SUP_COUTV__(outputArgs);
259 xoap::MessageReference replyMessage =
260 SOAPUtilities::makeSOAPMessageReference(
"feMacrosResponse");
262 txParameters.addParameter(
"requester", requester);
263 txParameters.addParameter(
"targetInterfaceID", targetInterfaceID);
264 txParameters.addParameter(
"feMacroName", feMacroName);
265 txParameters.addParameter(
"outputArgs", outputArgs);
266 SOAPUtilities::addParameters(replyMessage, txParameters);
268 __SUP_COUT__ <<
"Sending FE macro result: "
269 << SOAPUtilities::translate(replyMessage) << __E__;
273 else if(type ==
"feMacroMultiDimensionalStart" ||
274 type ==
"macroMultiDimensionalStart")
280 rxParameters.addParameter(
"macroString");
281 rxParameters.addParameter(
"macroName");
284 rxParameters.addParameter(
"feMacroName");
286 rxParameters.addParameter(
"enableSavingOutput");
287 rxParameters.addParameter(
"outputFilePath");
288 rxParameters.addParameter(
"outputFileRadix");
289 rxParameters.addParameter(
"inputArgs");
291 SOAPUtilities::receive(message, rxParameters);
293 std::string requester = rxParameters.getValue(
"requester");
294 std::string targetInterfaceID = rxParameters.getValue(
"targetInterfaceID");
295 std::string macroName, macroString;
298 macroName = rxParameters.getValue(
"macroName");
299 macroString = rxParameters.getValue(
"macroString");
300 __SUP_COUTV__(macroString);
303 macroName = rxParameters.getValue(
"feMacroName");
304 bool enableSavingOutput = rxParameters.getValue(
"enableSavingOutput") ==
"1";
305 std::string outputFilePath = rxParameters.getValue(
"outputFilePath");
306 std::string outputFileRadix = rxParameters.getValue(
"outputFileRadix");
307 std::string inputArgs = rxParameters.getValue(
"inputArgs");
309 __SUP_COUTV__(requester);
310 __SUP_COUTV__(targetInterfaceID);
311 __SUP_COUTV__(macroName);
312 __SUP_COUTV__(enableSavingOutput);
313 __SUP_COUTV__(outputFilePath);
314 __SUP_COUTV__(outputFileRadix);
315 __SUP_COUTV__(inputArgs);
330 catch(std::runtime_error& e)
332 __SUP_SS__ <<
"In Supervisor with LID="
333 << getApplicationDescriptor()->getLocalId()
334 <<
" the Macro named '" << macroName <<
"' with target FE '"
336 <<
"' failed to start multi-dimensional launch. "
337 <<
"Here is the error:\n\n"
338 << e.what() << __E__;
343 __SUP_SS__ <<
"In Supervisor with LID="
344 << getApplicationDescriptor()->getLocalId()
345 <<
" the Macro named '" << macroName <<
"' with target FE '"
347 <<
"' failed to start multi-dimensional launch "
348 <<
"due to an unknown error." << __E__;
356 theFEInterfacesManager_->startFEMacroMultiDimensional(requester,
364 catch(std::runtime_error& e)
366 __SUP_SS__ <<
"In Supervisor with LID="
367 << getApplicationDescriptor()->getLocalId()
368 <<
" the FE Macro named '" << macroName <<
"' with target FE '"
370 <<
"' failed to start multi-dimensional launch. "
371 <<
"Here is the error:\n\n"
372 << e.what() << __E__;
377 __SUP_SS__ <<
"In Supervisor with LID="
378 << getApplicationDescriptor()->getLocalId()
379 <<
" the FE Macro named '" << macroName <<
"' with target FE '"
381 <<
"' failed to start multi-dimensional launch "
382 <<
"due to an unknown error." << __E__;
387 xoap::MessageReference replyMessage =
388 SOAPUtilities::makeSOAPMessageReference(type +
"Done");
391 SOAPUtilities::addParameters(replyMessage, txParameters);
393 __SUP_COUT__ <<
"Sending FE macro result: "
394 << SOAPUtilities::translate(replyMessage) << __E__;
398 else if(type ==
"feMacroMultiDimensionalCheck" ||
399 type ==
"macroMultiDimensionalCheck")
403 rxParameters.addParameter(
"macroName");
405 rxParameters.addParameter(
"feMacroName");
406 rxParameters.addParameter(
"targetInterfaceID");
408 SOAPUtilities::receive(message, rxParameters);
410 std::string targetInterfaceID = rxParameters.getValue(
"targetInterfaceID");
411 std::string macroName;
413 macroName = rxParameters.getValue(
"macroName");
415 macroName = rxParameters.getValue(
"feMacroName");
417 __SUP_COUTV__(targetInterfaceID);
418 __SUP_COUTV__(macroName);
423 done = theFEInterfacesManager_->checkMacroMultiDimensional(targetInterfaceID,
426 catch(std::runtime_error& e)
428 __SUP_SS__ <<
"In Supervisor with LID="
429 << getApplicationDescriptor()->getLocalId()
430 <<
" the FE Macro named '" << macroName <<
"' with target FE '"
432 <<
"' failed to check multi-dimensional launch. "
433 <<
"Here is the error:\n\n"
434 << e.what() << __E__;
439 __SUP_SS__ <<
"In Supervisor with LID="
440 << getApplicationDescriptor()->getLocalId()
441 <<
" the FE Macro named '" << macroName <<
"' with target FE '"
443 <<
"' failed to check multi-dimensional launch "
444 <<
"due to an unknown error." << __E__;
448 xoap::MessageReference replyMessage =
449 SOAPUtilities::makeSOAPMessageReference(type +
"Done");
451 txParameters.addParameter(
"Done", done ?
"1" :
"0");
452 SOAPUtilities::addParameters(replyMessage, txParameters);
454 __SUP_COUT__ <<
"Sending FE macro result: "
455 << SOAPUtilities::translate(replyMessage) << __E__;
461 __SUP_SS__ <<
"Unrecognized FE Communication type: " << type << __E__;
465 catch(
const std::runtime_error& e)
467 __SUP_SS__ <<
"Error encountered processing FE communication request: " << e.what()
469 __SUP_COUT_ERR__ << ss.str();
472 parameters.addParameter(
"Error", ss.str());
473 return SOAPUtilities::makeSOAPMessageReference(
474 supervisorClassNoNamespace_ +
"FailFECommunicationRequest", parameters);
478 __SUP_SS__ <<
"Unknown error encountered processing FE communication request."
480 __SUP_COUT_ERR__ << ss.str();
483 parameters.addParameter(
"Error", ss.str());
484 return SOAPUtilities::makeSOAPMessageReference(
485 supervisorClassNoNamespace_ +
"FailFECommunicationRequest", parameters);
495 xoap::MessageReference FESupervisor::macroMakerSupervisorRequest(
496 xoap::MessageReference message)
498 __SUP_COUT__ <<
"$$$$$$$$$$$$$$$$$" << __E__;
502 parameters.addParameter(
"Request");
504 __SUP_COUT__ <<
"Received Macro Maker message: " << SOAPUtilities::translate(message)
507 SOAPUtilities::receive(message, parameters);
508 std::string request = parameters.getValue(
"Request");
510 __SUP_COUT__ <<
"request: " << request << __E__;
524 if(request ==
"GetInterfaces")
526 if(theFEInterfacesManager_)
527 retParameters.addParameter(
529 theFEInterfacesManager_->getFEListString(
530 std::to_string(getApplicationDescriptor()->getLocalId())));
532 retParameters.addParameter(
"FEList",
"");
535 if(theStateMachine_.getErrorMessage() !=
"")
536 retParameters.addParameter(
"frontEndError",
537 theStateMachine_.getErrorMessage());
539 return SOAPUtilities::makeSOAPMessageReference(
540 supervisorClassNoNamespace_ +
"Response", retParameters);
542 else if(request ==
"UniversalWrite")
544 if(!theFEInterfacesManager_)
546 __SUP_SS__ <<
"No FE Interface Manager! Are you configured?" << __E__;
551 requestParameters.addParameter(
"InterfaceID");
552 requestParameters.addParameter(
"Address");
553 requestParameters.addParameter(
"Data");
554 SOAPUtilities::receive(message, requestParameters);
555 std::string interfaceID = requestParameters.getValue(
"InterfaceID");
556 std::string addressStr = requestParameters.getValue(
"Address");
557 std::string dataStr = requestParameters.getValue(
"Data");
559 __SUP_COUT__ <<
"Address: " << addressStr <<
" Data: " << dataStr
560 <<
" InterfaceID: " << interfaceID << __E__;
567 <<
"theFEInterfacesManager_->getInterfaceUniversalAddressSize(index) "
568 << theFEInterfacesManager_->getInterfaceUniversalAddressSize(interfaceID)
571 <<
"theFEInterfacesManager_->getInterfaceUniversalDataSize(index) "
572 << theFEInterfacesManager_->getInterfaceUniversalDataSize(interfaceID)
581 __SUP_COUT__ <<
"Translating address: ";
583 std::string addressTmp;
585 theFEInterfacesManager_->getInterfaceUniversalAddressSize(interfaceID));
586 char* address = &addressTmp[0];
588 if(addressStr.size() % 2)
589 addressStr =
"0" + addressStr;
591 for(; i < addressStr.size() &&
592 i / 2 < theFEInterfacesManager_->getInterfaceUniversalAddressSize(
596 tmpHex[0] = addressStr[addressStr.size() - 1 - i - 1];
597 tmpHex[1] = addressStr[addressStr.size() - 1 - i];
598 sscanf(tmpHex,
"%hhX", (
unsigned char*)&address[i / 2]);
599 printf(
"%2.2X", (
unsigned char)address[i / 2]);
603 theFEInterfacesManager_->getInterfaceUniversalAddressSize(interfaceID);
607 printf(
"%2.2X", (
unsigned char)address[i / 2]);
612 __SUP_COUT__ <<
"Translating data: ";
616 theFEInterfacesManager_->getInterfaceUniversalDataSize(interfaceID));
617 char* data = &dataTmp[0];
619 if(dataStr.size() % 2)
620 dataStr =
"0" + dataStr;
623 for(; i < dataStr.size() &&
625 theFEInterfacesManager_->getInterfaceUniversalDataSize(interfaceID);
628 tmpHex[0] = dataStr[dataStr.size() - 1 - i - 1];
629 tmpHex[1] = dataStr[dataStr.size() - 1 - i];
630 sscanf(tmpHex,
"%hhX", (
unsigned char*)&data[i / 2]);
631 printf(
"%2.2X", (
unsigned char)data[i / 2]);
635 theFEInterfacesManager_->getInterfaceUniversalDataSize(interfaceID);
639 printf(
"%2.2X", (
unsigned char)data[i / 2]);
651 theFEInterfacesManager_->universalWrite(interfaceID, address, data);
656 return SOAPUtilities::makeSOAPMessageReference(
657 supervisorClassNoNamespace_ +
"DataWritten", retParameters);
659 else if(request ==
"UniversalRead")
661 if(!theFEInterfacesManager_)
663 __SUP_SS__ <<
"No FE Interface Manager! Are you configured?" << __E__;
669 requestParameters.addParameter(
"InterfaceID");
670 requestParameters.addParameter(
"Address");
671 SOAPUtilities::receive(message, requestParameters);
672 std::string interfaceID = requestParameters.getValue(
"InterfaceID");
673 std::string addressStr = requestParameters.getValue(
"Address");
675 __SUP_COUT__ <<
"Address: " << addressStr <<
" InterfaceID: " << interfaceID
684 <<
"theFEInterfacesManager_->getInterfaceUniversalAddressSize(index) "
685 << theFEInterfacesManager_->getInterfaceUniversalAddressSize(interfaceID)
688 <<
"theFEInterfacesManager_->getInterfaceUniversalDataSize(index) "
689 << theFEInterfacesManager_->getInterfaceUniversalDataSize(interfaceID)
695 __SUP_COUT__ <<
"Translating address: ";
697 std::string addressTmp;
699 theFEInterfacesManager_->getInterfaceUniversalAddressSize(interfaceID));
700 char* address = &addressTmp[0];
702 if(addressStr.size() % 2)
703 addressStr =
"0" + addressStr;
706 for(; i < addressStr.size() &&
707 i / 2 < theFEInterfacesManager_->getInterfaceUniversalAddressSize(
711 tmpHex[0] = addressStr[addressStr.size() - 1 - i - 1];
712 tmpHex[1] = addressStr[addressStr.size() - 1 - i];
713 sscanf(tmpHex,
"%hhX", (
unsigned char*)&address[i / 2]);
714 printf(
"%2.2X", (
unsigned char)address[i / 2]);
718 theFEInterfacesManager_->getInterfaceUniversalAddressSize(interfaceID);
722 printf(
"%2.2X", (
unsigned char)address[i / 2]);
727 unsigned int dataSz =
728 theFEInterfacesManager_->getInterfaceUniversalDataSize(interfaceID);
730 dataStr.resize(dataSz);
731 char* data = &dataStr[0];
739 theFEInterfacesManager_->universalRead(interfaceID, address, data);
741 catch(
const std::runtime_error& e)
745 __MOUT_ERR__ <<
"Exception caught during read: " << e.what() << __E__;
746 __SUP_COUT_ERR__ <<
"Exception caught during read: " << e.what() << __E__;
747 retParameters.addParameter(
"dataResult",
"Time Out Error");
748 return SOAPUtilities::makeSOAPMessageReference(
749 supervisorClassNoNamespace_ +
"aa", retParameters);
755 __MOUT_ERR__ <<
"Exception caught during read." << __E__;
756 __SUP_COUT_ERR__ <<
"Exception caught during read." << __E__;
757 retParameters.addParameter(
"dataResult",
"Time Out Error");
758 return SOAPUtilities::makeSOAPMessageReference(
759 supervisorClassNoNamespace_ +
"aa", retParameters);
765 std::string str8(data);
767 __SUP_COUT__ <<
"decResult[" << dataSz
768 <<
" bytes]: " << *((
unsigned long long*)(&str8[0]))
772 std::string hexResultStr;
773 hexResultStr.reserve(dataSz * 2 + 1);
774 char* hexResult = &hexResultStr[0];
778 for(
unsigned int i = 0; i < dataSz; ++i)
780 sprintf(&hexResult[i * 2],
"%2.2X", (
unsigned char)data[dataSz - 1 - i]);
783 __SUP_COUT__ <<
"hexResult[" << strlen(hexResult)
784 <<
" nibbles]: " << std::string(hexResult) << __E__;
786 retParameters.addParameter(
"dataResult", hexResult);
787 return SOAPUtilities::makeSOAPMessageReference(
788 supervisorClassNoNamespace_ +
"aa", retParameters);
790 else if(request ==
"GetInterfaceMacros")
792 if(theFEInterfacesManager_)
793 retParameters.addParameter(
795 theFEInterfacesManager_->getFEMacrosString(
796 CorePropertySupervisorBase::getSupervisorUID(),
797 std::to_string(CoreSupervisorBase::getSupervisorLID())));
799 retParameters.addParameter(
"FEMacros",
"");
801 return SOAPUtilities::makeSOAPMessageReference(
802 supervisorClassNoNamespace_ +
"Response", retParameters);
804 else if(request ==
"RunInterfaceMacro")
806 if(!theFEInterfacesManager_)
808 __SUP_SS__ <<
"Missing FE Interface Manager! Are you configured?"
815 requestParameters.addParameter(
"feMacroName");
816 requestParameters.addParameter(
"inputArgs");
817 requestParameters.addParameter(
"outputArgs");
818 requestParameters.addParameter(
"InterfaceID");
819 SOAPUtilities::receive(message, requestParameters);
820 std::string interfaceID = requestParameters.getValue(
"InterfaceID");
821 std::string feMacroName = requestParameters.getValue(
"feMacroName");
822 std::string inputArgs = requestParameters.getValue(
"inputArgs");
823 std::string outputArgs = requestParameters.getValue(
"outputArgs");
829 theFEInterfacesManager_->runFEMacro(
830 interfaceID, feMacroName, inputArgs, outputArgs);
832 catch(std::runtime_error& e)
834 __SUP_SS__ <<
"In Supervisor with LID="
835 << getApplicationDescriptor()->getLocalId()
836 <<
" the FE Macro named '" << feMacroName
837 <<
"' with target FE '" << interfaceID
838 <<
"' failed. Here is the error:\n\n"
839 << e.what() << __E__;
844 __SUP_SS__ <<
"In Supervisor with LID="
845 << getApplicationDescriptor()->getLocalId()
846 <<
" the FE Macro named '" << feMacroName
847 <<
"' with target FE '" << interfaceID
848 <<
"' failed due to an unknown error." << __E__;
853 retParameters.addParameter(
"outputArgs", outputArgs);
855 return SOAPUtilities::makeSOAPMessageReference(
856 supervisorClassNoNamespace_ +
"Response", retParameters);
858 else if(request ==
"RunMacroMakerMacro")
860 if(!theFEInterfacesManager_)
862 __SUP_SS__ <<
"Missing FE Interface Manager! Are you configured?"
869 requestParameters.addParameter(
"macroName");
870 requestParameters.addParameter(
"macroString");
871 requestParameters.addParameter(
"inputArgs");
872 requestParameters.addParameter(
"outputArgs");
873 requestParameters.addParameter(
"InterfaceID");
874 SOAPUtilities::receive(message, requestParameters);
875 std::string interfaceID = requestParameters.getValue(
"InterfaceID");
876 std::string macroName = requestParameters.getValue(
"macroName");
877 std::string macroString = requestParameters.getValue(
"macroString");
878 std::string inputArgs = requestParameters.getValue(
"inputArgs");
879 std::string outputArgs = requestParameters.getValue(
"outputArgs");
885 theFEInterfacesManager_->runMacro(
886 interfaceID, macroString, inputArgs, outputArgs);
888 catch(std::runtime_error& e)
890 __SUP_SS__ <<
"In Supervisor with LID="
891 << getApplicationDescriptor()->getLocalId()
892 <<
" the MacroMaker Macro named '" << macroName
893 <<
"' with target FE '" << interfaceID
894 <<
"' failed. Here is the error:\n\n"
895 << e.what() << __E__;
900 __SUP_SS__ <<
"In Supervisor with LID="
901 << getApplicationDescriptor()->getLocalId()
902 <<
" the MacroMaker Macro named '" << macroName
903 <<
"' with target FE '" << interfaceID
904 <<
"' failed due to an unknown error." << __E__;
908 retParameters.addParameter(
"outputArgs", outputArgs);
910 return SOAPUtilities::makeSOAPMessageReference(
911 supervisorClassNoNamespace_ +
"Response", retParameters);
915 __SUP_SS__ <<
"Unrecognized request received! '" << request <<
"'" << __E__;
919 catch(
const std::runtime_error& e)
921 __SUP_SS__ <<
"Error occurred handling request: " << e.what() << __E__;
922 __SUP_COUT_ERR__ << ss.str();
923 retParameters.addParameter(
"Error", ss.str());
927 __SUP_SS__ <<
"Error occurred handling request." << __E__;
928 __SUP_COUT_ERR__ << ss.str();
929 retParameters.addParameter(
"Error", ss.str());
932 return SOAPUtilities::makeSOAPMessageReference(
933 supervisorClassNoNamespace_ +
"FailRequest", retParameters);
938 xoap::MessageReference FESupervisor::workLoopStatusRequest(xoap::MessageReference message)
940 if(!theFEInterfacesManager_)
942 __SUP_SS__ <<
"Invalid request for front-end workloop status from Supervisor "
943 "without a FEVInterfacesManager."
948 return SOAPUtilities::makeSOAPMessageReference(
949 (theFEInterfacesManager_->allFEWorkloopsAreDone()
950 ? CoreSupervisorBase::WORK_LOOP_DONE
951 : CoreSupervisorBase::WORK_LOOP_WORKING));
964 theFEInterfacesManager_ = 0;
966 for(
unsigned int i = 0; i < theStateMachineImplementation_.size(); ++i)
970 theFEInterfacesManager_ =
972 if(!theFEInterfacesManager_)
975 __SUP_SS__ <<
"Dynamic cast failure!" << __E__;
978 __SUP_COUT__ <<
"State Machine " << i <<
" WAS of type FEVInterfacesManager"
985 __SUP_COUT__ <<
"State Machine " << i
986 <<
" was NOT of type FEVInterfacesManager" << __E__;
990 __SUP_COUT__ <<
"theFEInterfacesManager pointer = " << theFEInterfacesManager_
993 return theFEInterfacesManager_;
void startMacroMultiDimensional(const std::string &requester, const std::string &interfaceID, const std::string ¯oName, const std::string ¯oString, const bool enableSavingOutput, const std::string &outputFilePath, const std::string &outputFileRadix, const std::string &inputArgs)