18 #include "i2o/Method.h"
19 #include "interface/shared/i2oXFunctionCodes.h"
20 #include "interface/evb/i2oEVBMsgs.h"
21 #include "xcept/tools.h"
23 #include "toolbox/mem/HeapAllocator.h"
24 #include "toolbox/mem/Reference.h"
25 #include "toolbox/mem/MemoryPoolFactory.h"
26 #include "toolbox/mem/exception/Exception.h"
28 #include "xoap/MessageReference.h"
29 #include "xoap/MessageFactory.h"
30 #include "xoap/SOAPEnvelope.h"
31 #include "xoap/SOAPBody.h"
32 #include "xoap/domutils.h"
33 #include "xoap/Method.h"
35 #include "cgicc/CgiDefs.h"
36 #include "cgicc/Cgicc.h"
37 #include "cgicc/FormEntry.h"
38 #include "cgicc/HTMLClasses.h"
47 using std::stringstream;
50 using namespace evf::rb_statemachine;
64 res_->gui_->setVersionString(
"Changeset: *** 05.07.2012 - V1.22 ***");
76 url_ = getApplicationDescriptor()->getContextDescriptor()->getURL() +
"/"
77 + getApplicationDescriptor()->getURN();
78 class_ = getApplicationDescriptor()->getClassName();
79 instance_ = getApplicationDescriptor()->getInstance();
84 XDAQ_ORGANIZATION_ID);
90 I2O_EVM_LUMISECTION, XDAQ_ORGANIZATION_ID);
95 vector<toolbox::lang::Method*> methods =
res_->gui_->getMethods();
96 vector<toolbox::lang::Method*>::iterator it;
97 for (it = methods.begin(); it != methods.end(); ++it) {
98 if ((*it)->type() ==
"cgi") {
99 string name =
static_cast<xgi::MethodSignature*
> (*it)->name();
106 string i2oPoolName =
res_->sourceId_ +
"_i2oPool";
108 toolbox::mem::HeapAllocator *allocator =
109 new toolbox::mem::HeapAllocator();
110 toolbox::net::URN urn(
"toolbox-mem-pool", i2oPoolName);
111 toolbox::mem::MemoryPoolFactory* poolFactory =
112 toolbox::mem::getMemoryPoolFactory();
113 res_->i2oPool_ = poolFactory->createPool(urn, allocator);
115 string s =
"Failed to create pool: " + i2oPoolName;
116 LOG4CPLUS_FATAL(
res_->log_, s);
124 fsm_->findRcmsStateListener(
this);
127 getApplicationDescriptor()->setAttribute(
"icon",
"/evf/images/rbicon.jpg");
155 int timeoutMicroSec) {
159 gettimeofday(&start, 0);
161 while (
fsm_->getExternallyVisibleState().compare(initialState) == 0) {
162 gettimeofday(&now, 0);
163 if (now.tv_usec <= start.tv_usec + timeoutMicroSec)
179 xoap::MessageReference returnMsg;
182 string initialState = fsm_->getExternallyVisibleState();
186 =
"Failed to extract FSM event and parameters from SOAP message: ";
189 errorMsg =
"Failed to put a '" + command
190 +
"' state machine event into command queue: ";
192 if (command ==
"Configure") {
195 res_->commands_.enqEvent(stMachEvent);
197 }
else if (command ==
"Enable") {
200 res_->commands_.enqEvent(stMachEvent);
202 }
else if (command ==
"Stop") {
205 res_->commands_.enqEvent(stMachEvent);
207 }
else if (command ==
"Halt") {
210 res_->commands_.enqEvent(stMachEvent);
216 "Received an unknown state machine event '" + command
220 res_->commands_.enqEvent(stMachEvent);
223 errorMsg =
"Failed to create FSM SOAP reply message: ";
227 if (waitForStateChange(initialState, 2000000)) {
229 fsm_->getExternallyVisibleState());
232 "FAILED TO REACH TARGET STATE FROM SOAP COMMAND WITHIN TIMEOUT!");
235 res_->commands_.enqEvent(stMachEvent);
239 string s =
"Exception on FSM Callback!";
240 LOG4CPLUS_FATAL(res_->log_, s);
250 int currentStateID = -1;
251 fsm_->transitionReadLock();
252 currentStateID = fsm_->getCurrentState().stateID();
253 fsm_->transitionUnlock();
257 bool eventComplete = res_->resourceStructure_->buildResource(bufRef);
258 if (eventComplete && res_->doDropEvents_)
260 cout <<
"dropping event" << endl;
261 res_->resourceStructure_->dropEvent();
265 fsm_->getCurrentState().moveToFailedState(e);
270 stringstream details;
271 details <<
" More details -> allocated events: "
272 << res_->nbAllocatedEvents_ <<
", pending requests to BU: "
273 << res_->nbPendingRequests_ <<
", received events: "
274 << res_->nbReceivedEvents_;
277 "TAKE i2o frame received in state "
278 << fsm_->getExternallyVisibleState()
279 <<
" is being lost! THIS MEANS LOST EVENT DATA!"
284 res_->nbTakeReceived_.value_++;
291 int currentStateID = -1;
292 fsm_->transitionReadLock();
293 currentStateID = fsm_->getCurrentState().stateID();
294 fsm_->transitionUnlock();
299 I2O_EVM_END_OF_LUMISECTION_MESSAGE_FRAME *
msg =
300 (I2O_EVM_END_OF_LUMISECTION_MESSAGE_FRAME *) bufRef->getDataLocation();
301 if (msg->lumiSection == 0) {
302 LOG4CPLUS_ERROR(res_->log_,
"EOL message received for ls=0!!! ");
304 res_->commands_.enqEvent(fail);
308 res_->nbReceivedEol_++;
309 if (res_->highestEolReceived_.value_ + 100 < msg->lumiSection) {
310 LOG4CPLUS_ERROR( res_->log_,
"EOL message not in sequence, expected "
311 << res_->highestEolReceived_.value_ + 1 <<
" received "
312 << msg->lumiSection);
315 res_->commands_.enqEvent(fail);
320 if (res_->highestEolReceived_.value_ + 1 != msg->lumiSection)
321 LOG4CPLUS_WARN( res_->log_,
"EOL message not in sequence, expected "
322 << res_->highestEolReceived_.value_ + 1 <<
" received "
323 << msg->lumiSection);
325 if (res_->highestEolReceived_.value_ < msg->lumiSection)
326 res_->highestEolReceived_.value_ = msg->lumiSection;
329 res_->resourceStructure_->postEndOfLumiSection(bufRef);
331 fsm_->getCurrentState().moveToFailedState(e);
337 if (!success) LOG4CPLUS_ERROR(res_->log_,
"EOL i2o frame received in state "
338 << fsm_->getExternallyVisibleState() <<
" is being lost");
347 res_->lockRSAccess();
349 fsm_->transitionReadLock();
350 const BaseState& currentState = fsm_->getCurrentState();
352 if (res_->allowI2ODiscards_)
358 "Data Discard I2O message received from SM is being ignored! ShmBuffer was reinitialized!");
361 fsm_->transitionUnlock();
362 res_->unlockRSAccess();
364 res_->nbDataDiscardReceived_.value_++;
372 res_->lockRSAccess();
374 fsm_->transitionReadLock();
375 const BaseState& currentState = fsm_->getCurrentState();
377 if (res_->allowI2ODiscards_)
383 "DQM Discard I2O message received from SM is being ignored! ShmBuffer was reinitialized!");
386 fsm_->transitionUnlock();
387 res_->unlockRSAccess();
389 res_->nbDqmDiscardReceived_.value_++;
395 string name =
in->getenv(
"PATH_INFO");
397 name =
"defaultWebPage";
398 static_cast<xgi::MethodSignature*
> (res_->gui_->getMethod(name))->invoke(
406 if (0 !=
res_->resourceStructure_) {
410 if (e.type() ==
"urn:xdata-event:ItemGroupRetrieveEvent") {
411 res_->nbClients_ =
res_->resourceStructure_->nbClients();
413 =
res_->resourceStructure_->clientPrcIdsAsString();
414 res_->nbAllocatedEvents_ =
res_->resourceStructure_->nbAllocated();
415 res_->nbPendingRequests_ =
res_->resourceStructure_->nbPending();
416 res_->nbReceivedEvents_ =
res_->resourceStructure_->nbCompleted();
417 res_->nbSentEvents_ =
res_->resourceStructure_->nbSent();
418 res_->nbSentDqmEvents_ =
res_->resourceStructure_->nbSentDqm();
419 res_->nbSentErrorEvents_ =
res_->resourceStructure_->nbSentError();
421 int nbPSMD =
res_->resourceStructure_->nbPendingSMDiscards();
422 if (nbPSMD>=0)
res_->nbPendingSMDiscards_=(
unsigned int)nbPSMD;
423 else res_->nbPendingSMDiscards_=0;
425 res_->nbPendingSMDqmDiscards_
426 =
res_->resourceStructure_->nbPendingSMDqmDiscards();
427 res_->nbDiscardedEvents_ =
res_->resourceStructure_->nbDiscarded();
428 res_->nbLostEvents_ =
res_->resourceStructure_->nbLost();
430 res_->nbEolPosted_ =
res_->resourceStructure_->nbEolPosted();
431 res_->nbEolDiscarded_ =
res_->resourceStructure_->nbEolDiscarded();
432 res_->nbDataErrors_ =
res_->resourceStructure_->nbErrors();
433 res_->nbCrcErrors_ =
res_->resourceStructure_->nbCrcErrors();
434 res_->nbAllocateSent_ =
res_->resourceStructure_->nbAllocSent();
435 res_->dataErrorFlag_.value_ = (
res_->nbCrcErrors_.value_ != 0u
436 + ((
res_->nbDataErrors_.value_ != 0u) << 1)
437 + ((
res_->nbLostEvents_.value_ != 0u) << 2)
438 + ((
res_->nbTimeoutsWithEvent_.value_ != 0u) << 3)
439 + ((
res_->nbTimeoutsWithoutEvent_.value_ != 0u) << 4)
440 + ((
res_->nbSentErrorEvents_.value_ != 0u) << 5));
442 }
else if (e.type() ==
"ItemChangedEvent") {
444 string item =
dynamic_cast<xdata::ItemChangedEvent&
> (
e).itemName();
446 if (item ==
"doFedIdCheck")
448 if (item ==
"useEvmBoard")
450 if (item ==
"doCrcCheck")
451 res_->resourceStructure_->setDoCrcCheck(
res_->doCrcCheck_);
452 if (item ==
"doDumpEvents")
453 res_->resourceStructure_->setDoDumpEvents(
res_->doDumpEvents_);
458 res_->nbClients_ = 0;
459 res_->clientPrcIds_ =
"";
460 res_->nbAllocatedEvents_ = 0;
461 res_->nbPendingRequests_ = 0;
462 res_->nbReceivedEvents_ = 0;
463 res_->nbSentEvents_ = 0;
464 res_->nbSentDqmEvents_ = 0;
465 res_->nbSentErrorEvents_ = 0;
466 res_->nbPendingSMDiscards_ = 0;
467 res_->nbPendingSMDqmDiscards_ = 0;
468 res_->nbDiscardedEvents_ = 0;
469 res_->nbLostEvents_ = 0;
470 res_->nbDataErrors_ = 0;
471 res_->nbCrcErrors_ = 0;
472 res_->nbAllocateSent_ = 0;
479 assert(0 !=
res_->gui_);
481 res_->gui_->addMonitorParam(
"url", &
url_);
482 res_->gui_->addMonitorParam(
"class", &
class_);
484 res_->gui_->addMonitorParam(
"runNumber", &
res_->runNumber_);
485 res_->gui_->addMonitorParam(
"stateName",
486 fsm_->getExternallyVisibleStatePtr());
488 res_->gui_->addMonitorParam(
"deltaT", &
res_->deltaT_);
489 res_->gui_->addMonitorParam(
"deltaN", &
res_->deltaN_);
490 res_->gui_->addMonitorParam(
"deltaSumOfSquares", &
res_->deltaSumOfSquares_);
491 res_->gui_->addMonitorParam(
"deltaSumOfSizes", &
res_->deltaSumOfSizes_);
493 res_->gui_->addMonitorParam(
"throughput", &
res_->throughput_);
494 res_->gui_->addMonitorParam(
"rate", &
res_->rate_);
495 res_->gui_->addMonitorParam(
"average", &
res_->average_);
496 res_->gui_->addMonitorParam(
"rms", &
res_->rms_);
497 res_->gui_->addMonitorParam(
"dataErrorFlag", &
res_->dataErrorFlag_);
499 res_->gui_->addMonitorCounter(
"nbAllocatedEvents",
500 &
res_->nbAllocatedEvents_);
501 res_->gui_->addMonitorCounter(
"nbPendingRequests",
502 &
res_->nbPendingRequests_);
503 res_->gui_->addMonitorCounter(
"nbReceivedEvents", &
res_->nbReceivedEvents_);
504 res_->gui_->addMonitorCounter(
"nbSentEvents", &
res_->nbSentEvents_);
505 res_->gui_->addMonitorCounter(
"nbSentErrorEvents",
506 &
res_->nbSentErrorEvents_);
507 res_->gui_->addMonitorCounter(
"nbDiscardedEvents",
508 &
res_->nbDiscardedEvents_);
510 res_->gui_->addMonitorCounter(
"nbReceivedEol", &
res_->nbReceivedEol_);
511 res_->gui_->addMonitorCounter(
"highestEolReceived",
512 &
res_->highestEolReceived_);
513 res_->gui_->addMonitorCounter(
"nbEolPosted", &
res_->nbEolPosted_);
514 res_->gui_->addMonitorCounter(
"nbEolDiscarded", &
res_->nbEolDiscarded_);
516 res_->gui_->addMonitorCounter(
"nbPendingSMDiscards",
517 &
res_->nbPendingSMDiscards_);
519 res_->gui_->addMonitorCounter(
"nbSentDqmEvents", &
res_->nbSentDqmEvents_);
520 res_->gui_->addMonitorCounter(
"nbDqmDiscardReceived",
521 &
res_->nbDqmDiscardReceived_);
522 res_->gui_->addMonitorCounter(
"nbPendingSMDqmDiscards",
523 &
res_->nbPendingSMDqmDiscards_);
525 res_->gui_->addMonitorCounter(
"nbLostEvents", &
res_->nbLostEvents_);
526 res_->gui_->addMonitorCounter(
"nbDataErrors", &
res_->nbDataErrors_);
527 res_->gui_->addMonitorCounter(
"nbCrcErrors", &
res_->nbCrcErrors_);
528 res_->gui_->addMonitorCounter(
"nbTimeoutsWithEvent",
529 &
res_->nbTimeoutsWithEvent_);
530 res_->gui_->addMonitorCounter(
"nbTimeoutsWithoutEvent",
531 &
res_->nbTimeoutsWithoutEvent_);
533 res_->gui_->addStandardParam(
"segmentationMode", &
res_->segmentationMode_);
534 res_->gui_->addStandardParam(
"useMessageQueueIPC",
535 &
res_->useMessageQueueIPC_);
536 res_->gui_->addStandardParam(
"nbClients", &
res_->nbClients_);
537 res_->gui_->addStandardParam(
"clientPrcIds", &
res_->clientPrcIds_);
538 res_->gui_->addStandardParam(
"nbRawCells", &
res_->nbRawCells_);
539 res_->gui_->addStandardParam(
"nbRecoCells", &
res_->nbRecoCells_);
540 res_->gui_->addStandardParam(
"nbDqmCells", &
res_->nbDqmCells_);
541 res_->gui_->addStandardParam(
"rawCellSize", &
res_->rawCellSize_);
542 res_->gui_->addStandardParam(
"recoCellSize", &
res_->recoCellSize_);
543 res_->gui_->addStandardParam(
"dqmCellSize", &
res_->dqmCellSize_);
544 res_->gui_->addStandardParam(
"nbFreeResRequiredForAllocate",
545 &
res_->freeResRequiredForAllocate_);
547 res_->gui_->addStandardParam(
"doDropEvents", &
res_->doDropEvents_);
548 res_->gui_->addStandardParam(
"doFedIdCheck", &
res_->doFedIdCheck_);
549 res_->gui_->addStandardParam(
"doCrcCheck", &
res_->doCrcCheck_);
550 res_->gui_->addStandardParam(
"doDumpEvents", &
res_->doDumpEvents_);
551 res_->gui_->addStandardParam(
"buClassName", &
res_->buClassName_);
552 res_->gui_->addStandardParam(
"buInstance", &
res_->buInstance_);
553 res_->gui_->addStandardParam(
"smClassName", &
res_->smClassName_);
554 res_->gui_->addStandardParam(
"smInstance", &
res_->smInstance_);
555 res_->gui_->addStandardParam(
"resourceStructureTimeout_",
556 &
res_->resourceStructureTimeout_);
557 res_->gui_->addStandardParam(
"monSleepSec", &
res_->monSleepSec_);
558 res_->gui_->addStandardParam(
"watchSleepSec", &
res_->watchSleepSec_);
559 res_->gui_->addStandardParam(
"timeOutSec", &
res_->timeOutSec_);
560 res_->gui_->addStandardParam(
"processKillerEnabled",
561 &
res_->processKillerEnabled_);
562 res_->gui_->addStandardParam(
"useEvmBoard", &
res_->useEvmBoard_);
563 res_->gui_->addStandardParam(
"rcmsStateListener",
fsm_->rcmsStateListener());
565 res_->gui_->addStandardParam(
"foundRcmsStateListener",
566 fsm_->foundRcmsStateListener());
568 res_->gui_->addStandardParam(
"reasonForFailed", &
res_->reasonForFailed_);
570 res_->gui_->addDebugCounter(
"nbAllocateSent", &
res_->nbAllocateSent_);
571 res_->gui_->addDebugCounter(
"nbTakeReceived", &
res_->nbTakeReceived_);
572 res_->gui_->addDebugCounter(
"nbDataDiscardReceived",
573 &
res_->nbDataDiscardReceived_);
575 res_->gui_->exportParameters();
577 res_->gui_->addItemChangedListener(
"doFedIdCheck",
this);
578 res_->gui_->addItemChangedListener(
"useEvmBoard",
this);
579 res_->gui_->addItemChangedListener(
"doCrcCheck",
this);
580 res_->gui_->addItemChangedListener(
"doDumpEvents",
this);
587 using namespace cgicc;
589 std::vector < FormEntry >
els = cgi.getElements();
590 for (std::vector<FormEntry>::iterator it =
els.begin(); it !=
els.end(); it++)
591 cout <<
"form entry " << (*it).getValue() << endl;
593 std::vector < FormEntry > el1;
594 cgi.getElement(
"crcError", el1);
595 *
out <<
"<html>" << endl;
596 res_->gui_->htmlHead(
in,
out, res_->sourceId_);
597 *
out <<
"<body>" << endl;
598 res_->gui_->htmlHeadline(
in,
out);
602 if (0 != res_->resourceStructure_) {
603 if (el1.size() != 0) {
604 res_->resourceStructure_->injectCRCError();
606 *
out <<
"<form method=\"GET\" action=\"customWebPage\" >";
608 <<
"<button name=\"crcError\" type=\"submit\" value=\"injCRC\">Inject CRC</button>"
610 *
out <<
"</form>" << endl;
611 *
out <<
"<hr/>" << endl;
612 vector < pid_t > client_prc_ids
613 = res_->resourceStructure_->clientPrcIds();
614 *
out <<
table().set(
"frame",
"void").set(
"rules",
"rows") .set(
"class",
615 "modules").set(
"width",
"250") << endl << tr() << th(
616 "Client Processes").set(
"colspan",
"3") << tr() << endl << tr()
617 << th(
"client").set(
"align",
"left") << th(
"process id").set(
618 "align",
"center") << th(
"status").set(
"align",
"center")
620 for (
UInt_t i = 0;
i < client_prc_ids.size();
i++) {
622 pid_t
pid = client_prc_ids[
i];
623 int status = kill(pid, 0);
629 stringstream ssstatus;
632 string bg_status = (status == 0) ?
"#00ff00" :
"ff0000";
633 *
out << tr() << td(ssi.str()).set(
"align",
"left") << td(
634 sspid.str()).set(
"align",
"center")
635 << td(ssstatus.str()).set(
"align",
"center").set(
"bgcolor",
636 bg_status) << tr() << endl;
639 *
out <<
"<br><br>" << endl;
641 vector < string > states = res_->resourceStructure_->cellStates();
642 vector < UInt_t > evt_numbers
643 = res_->resourceStructure_->cellEvtNumbers();
644 vector < pid_t > prc_ids = res_->resourceStructure_->cellPrcIds();
645 vector < time_t > time_stamps
646 = res_->resourceStructure_->cellTimeStamps();
648 *
out <<
table().set(
"frame",
"void").set(
"rules",
"rows") .set(
"class",
649 "modules").set(
"width",
"500") << endl << tr() << th(
650 "Shared Memory Cells").set(
"colspan",
"6") << tr() << endl
651 << tr() << th(
"cell").set(
"align",
"left") << th(
"state").set(
652 "align",
"center") << th(
"event").set(
"align",
"center") << th(
653 "process id").set(
"align",
"center") << th(
"timestamp").set(
654 "align",
"center") << th(
"time").set(
"align",
"center") << tr()
656 for (
UInt_t i = 0;
i < states.size();
i++) {
659 pid_t
pid = prc_ids[
i];
660 time_t tstamp = time_stamps[
i];
661 double tdiff = difftime(
time(0), tstamp);
666 if (evt != 0xffffffff)
675 stringstream sststamp;
680 stringstream sstdiff;
686 string bg_state =
"#ffffff";
687 if (state ==
"RAWWRITING" || state ==
"RAWWRITTEN" || state
688 ==
"RAWREADING" || state ==
"RAWREAD")
689 bg_state =
"#99CCff";
690 else if (state ==
"PROCESSING")
691 bg_state =
"#ff0000";
692 else if (state ==
"PROCESSED" || state ==
"RECOWRITING" || state
694 bg_state =
"#CCff99";
695 else if (state ==
"SENDING")
696 bg_state =
"#00FF33";
697 else if (state ==
"SENT")
698 bg_state =
"#006633";
699 else if (state ==
"DISCARDING")
700 bg_state =
"#FFFF00";
701 else if (state ==
"LUMISECTION")
702 bg_state =
"#0000FF";
704 *
out << tr() << td(ssi.str()).set(
"align",
"left")
705 << td(state).set(
"align",
"center").set(
"bgcolor", bg_state)
706 << td(ssevt.str()).set(
"align",
"center")
707 << td(sspid.str()).set(
"align",
"center") << td(
708 sststamp.str()).set(
"align",
"center")
709 << td(sstdiff.str()).set(
"align",
"center") << tr() << endl;
712 *
out <<
"<br><br>" << endl;
714 vector < string > dqmstates = res_->resourceStructure_->dqmCellStates();
716 *
out <<
table().set(
"frame",
"void").set(
"rules",
"rows") .set(
"class",
717 "modules").set(
"width",
"500") << endl << tr() << th(
718 "Shared Memory DQM Cells").set(
"colspan",
"6") << tr() << endl
719 << tr() << th(
"cell").set(
"align",
"left") << th(
"state").set(
720 "align",
"center") << tr() << endl;
721 for (
UInt_t i = 0;
i < dqmstates.size();
i++) {
722 string state = dqmstates[
i];
724 string bg_state =
"#ffffff";
725 if (state ==
"WRITING" || state ==
"WRITTEN")
726 bg_state =
"#99CCff";
727 else if (state ==
"SENDING")
728 bg_state =
"#00FF33";
729 else if (state ==
"SENT")
730 bg_state =
"#006633";
731 else if (state ==
"DISCARDING")
732 bg_state =
"#FFFF00";
734 *
out << tr() <<
"<td>" <<
i <<
"</td>" << td(state).set(
"align",
735 "center").set(
"bgcolor", bg_state) << tr() << endl;
740 *
out <<
"</body>" << endl <<
"</html>" << endl;
virtual bool discardDataEvent(MemRef_t *bufRef) const
tuple start
Check for commandline option errors.
FUResourceBroker(xdaq::ApplicationStub *s)
virtual ~FUResourceBroker()
void I2O_FU_TAKE_Callback(toolbox::mem::Reference *bufRef)
std::string extractParameters(xoap::MessageReference, xdaq::Application *)
void customWebPage(xgi::Input *in, xgi::Output *out)
bool waitForStateChange(std::string name, int timeoutMicroSec)
boost::shared_ptr< boost::statechart::event_base > EventPtr
void I2O_FU_DATA_DISCARD_Callback(toolbox::mem::Reference *bufRef)
#define I2O_FU_DQM_DISCARD
static void useEvmBoard(bool useEvmBoard)
void I2O_FU_DQM_DISCARD_Callback(toolbox::mem::Reference *bufRef)
rb_statemachine::SharedResourcesPtr_t res_
rb_statemachine::SMEventScheduler * eventScheduler_
xoap::MessageReference handleFSMSoapMessage(xoap::MessageReference msg)
rb_statemachine::RBStateMachinePtr fsm_
#define I2O_FU_DATA_DISCARD
virtual bool discardDqmEvent(MemRef_t *bufRef) const
void actionPerformed(xdata::Event &e)
xoap::MessageReference createFsmSoapResponseMsg(const std::string commandName, const std::string currentState)
static void doFedIdCheck(bool doFedIdCheck)
void I2O_EVM_LUMISECTION_Callback(toolbox::mem::Reference *bufRef)
void bindStateMachineCallbacks()
xdata::UnsignedInteger32 instance_
void webPageRequest(xgi::Input *in, xgi::Output *out)