MIDAS
Loading...
Searching...
No Matches
EqRpc Class Reference
Inheritance diagram for EqRpc:
Collaboration diagram for EqRpc:

Public Member Functions

 EqRpc (const char *eqname, const char *eqfilename)
 
 ~EqRpc ()
 
TMFeResult HandleInit (const std::vector< std::string > &args)
 
TMFeResult HandleRpc (const char *cmd, const char *args, std::string &response)
 
TMFeResult HandleBinaryRpc (const char *cmd, const char *args, std::vector< char > &response)
 
TMFeResult HandleBeginRun (int run_number)
 
TMFeResult HandleEndRun (int run_number)
 
TMFeResult HandlePauseRun (int run_number)
 
TMFeResult HandleResumeRun (int run_number)
 
TMFeResult HandleStartAbortRun (int run_number)
 
- Public Member Functions inherited from TMFeEquipment
 TMFeEquipment (const char *eqname, const char *eqfilename)
 
virtual ~TMFeEquipment ()
 
TMFeResult EqInit (const std::vector< std::string > &args)
 Initialize equipment.
 
TMFeResult EqPreInit ()
 Initialize equipment, before EquipmentBase::Init()
 
TMFeResult EqPostInit ()
 Initialize equipment, after EquipmentBase::Init()
 
TMFeResult EqReadCommon ()
 Read TMFeEqInfo from ODB /Equipment/NAME/Common.
 
TMFeResult EqWriteCommon (bool create=false)
 Write TMFeEqInfo to ODB /Equipment/NAME/Common.
 
virtual void HandleUsage ()
 
virtual void HandlePeriodic ()
 
virtual bool HandlePoll ()
 
virtual void HandlePollRead ()
 
void EqPollThread ()
 
void EqStartPollThread ()
 
void EqStopPollThread ()
 
TMFeResult ComposeEvent (char *pevent, size_t size) const
 
TMFeResult BkInit (char *pevent, size_t size) const
 
void * BkOpen (char *pevent, const char *bank_name, int bank_type) const
 
TMFeResult BkClose (char *pevent, void *ptr) const
 
int BkSize (const char *pevent) const
 
TMFeResult EqSendEvent (const char *pevent, bool write_to_odb=true)
 
TMFeResult EqSendEvent (const std::vector< char > &event, bool write_to_odb=true)
 
TMFeResult EqSendEvent (const std::vector< std::vector< char > > &event, bool write_to_odb=true)
 
TMFeResult EqSendEvent (int sg_n, const char *sg_ptr[], const size_t sg_len[], bool write_to_odb=true)
 
TMFeResult EqWriteEventToOdb (const char *pevent)
 
TMFeResult EqZeroStatistics ()
 
TMFeResult EqWriteStatistics ()
 
TMFeResult EqSetStatus (const char *status, const char *color)
 
 TMFeEquipment (TMFE *mfe, const char *name, TMFeCommon *common)
 
TMFeError Init ()
 Initialize equipment.
 
TMFeError SendData (const char *data, int size)
 ...
 
TMFeError ComposeEvent (char *pevent, int size)
 
TMFeError BkInit (char *pevent, int size)
 
void * BkOpen (char *pevent, const char *bank_name, int bank_type)
 
TMFeError BkClose (char *pevent, void *ptr)
 
int BkSize (const char *pevent)
 
TMFeError SendEvent (const char *pevent)
 
TMFeError ZeroStatistics ()
 
TMFeError WriteStatistics ()
 
TMFeError SetStatus (const char *status, const char *color)
 
- Public Member Functions inherited from TMFeRpcHandlerInterface
virtual void HandleBeginRun ()
 
virtual void HandleEndRun ()
 
virtual void HandlePauseRun ()
 
virtual void HandleResumeRun ()
 
virtual void HandleStartAbortRun ()
 
virtual std::string HandleRpc (const char *cmd, const char *args)
 

Additional Inherited Members

- Public Attributes inherited from TMFeEquipment
std::string fEqName
 
std::string fEqFilename
 
bool fEqConfEnableRpc = true
 
bool fEqConfEnablePeriodic = true
 
bool fEqConfEnablePoll = false
 
bool fEqConfReadConfigFromOdb = true
 
bool fEqConfEnabled = true
 
uint16_t fEqConfEventID = 1
 
uint16_t fEqConfTriggerMask = 0
 
std::string fEqConfBuffer = "SYSTEM"
 
int fEqConfType = 0
 
int fEqConfSource = 0
 
std::string fEqConfFormat = "MIDAS"
 
int fEqConfReadOn = 0
 
int fEqConfPeriodMilliSec = 1000
 
double fEqConfEventLimit = 0
 
uint32_t fEqConfNumSubEvents = 0
 
int fEqConfLogHistory = 0
 
bool fEqConfHidden = false
 
int fEqConfWriteCacheSize = 10000000
 
bool fEqConfReadOnlyWhenRunning = true
 
bool fEqConfWriteEventsToOdb = false
 
double fEqConfPeriodStatisticsSec = 1.0
 
double fEqConfPollSleepSec = 0.000100
 
size_t fEqConfMaxEventSize = 0
 
size_t fEqConfBufferSize = 0
 
std::mutex fEqMutex
 
TMFEfMfe = NULL
 
TMFrontendfFe = NULL
 
MVOdb * fOdbEq = NULL
 ODB Equipment/EQNAME.
 
MVOdb * fOdbEqCommon = NULL
 ODB Equipment/EQNAME/Common.
 
MVOdb * fOdbEqSettings = NULL
 ODB Equipment/EQNAME/Settings.
 
MVOdb * fOdbEqVariables = NULL
 ODB Equipment/EQNAME/Variables.
 
MVOdb * fOdbEqStatistics = NULL
 ODB Equipment/EQNAME/Statistics.
 
TMEventBufferfEqEventBuffer = NULL
 
int fEqSerial = 0
 
double fEqStatEvents = 0
 
double fEqStatBytes = 0
 
double fEqStatEpS = 0
 
double fEqStatKBpS = 0
 
double fEqStatLastTime = 0
 
double fEqStatLastEvents = 0
 
double fEqStatLastBytes = 0
 
double fEqStatLastWrite = 0
 
double fEqStatNextWrite = 0
 
double fEqPeriodicLastCallTime = 0
 
double fEqPeriodicNextCallTime = 0
 
std::atomic_bool fEqPollThreadStarting {false}
 
std::atomic_bool fEqPollThreadRunning {false}
 
std::atomic_bool fEqPollThreadShutdownRequested {false}
 
std::thread * fEqPollThread = NULL
 
std::string fName
 
TMFeCommonfCommon
 
int fBufferHandle
 
int fSerial
 
double fStatEvents
 
double fStatBytes
 
double fStatEpS
 
double fStatKBpS
 
double fStatLastTime
 
double fStatLastEvents
 
double fStatLastBytes
 

Detailed Description

Definition at line 364 of file fetest.cxx.

Constructor & Destructor Documentation

◆ EqRpc()

EqRpc::EqRpc ( const char *  eqname,
const char *  eqfilename 
)
inline

Definition at line 368 of file fetest.cxx.

369 : TMFeEquipment(eqname, eqfilename)
370 {
371 fEqConfEventID = 1;
372 }
uint16_t fEqConfEventID
Definition tmfe.h:171
TMFeEquipment()
Definition tmfe.h:255

◆ ~EqRpc()

EqRpc::~EqRpc ( )
inline

Definition at line 374 of file fetest.cxx.

375 {
376 }

Member Function Documentation

◆ HandleBeginRun()

TMFeResult EqRpc::HandleBeginRun ( int  run_number)
inlinevirtual

Reimplemented from TMFeEquipment.

Definition at line 421 of file fetest.cxx.

422 {
423 fMfe->Msg(MINFO, "HandleBeginRun", "Begin run %d!", run_number);
424 EqSetStatus("Running", "#00FF00");
425
426 printf("begin_of_run %d\n", run_number);
427
428 int fail = 0;
429 fOdbEqSettings->RI("begin_of_run_fail", &fail, true);
430
431 if (fail) {
432 printf("fail_begin_of_run: returning error status %d\n", fail);
433 return TMFeErrorMessage("begin of run failed by ODB setting!");
434 }
435
436 double s = 0;
437 fOdbEqSettings->RD("begin_of_run_sleep_sec", &s, true);
438
439 if (s) {
440 fMfe->SetWatchdogSec(s + 1);
441 int ms = int(s*1000.0);
442 printf("sleep_begin_of_run: calling ss_sleep(%d)\n", ms);
443 ss_sleep(ms);
444 }
445
446 return TMFeOk();
447 }
void Msg(int message_type, const char *filename, int line, const char *routine, const char *format,...) MATTRPRINTF(6
Definition tmfe.cxx:991
TMFeResult SetWatchdogSec(int sec)
Definition tmfe.cxx:144
MVOdb * fOdbEqSettings
ODB Equipment/EQNAME/Settings.
Definition tmfe.h:213
TMFE * fMfe
Definition tmfe.h:207
TMFeResult EqSetStatus(const char *status, const char *color)
Definition tmfe.cxx:2272
#define MINFO
Definition midas.h:560
INT ss_sleep(INT millisec)
Definition system.cxx:3700
INT run_number[2]
Definition mana.cxx:246
TMFeResult TMFeErrorMessage(const std::string &message)
Definition tmfe.cxx:29
TMFeResult TMFeOk()
Definition tmfe.h:106
Here is the call graph for this function:

◆ HandleBinaryRpc()

TMFeResult EqRpc::HandleBinaryRpc ( const char *  cmd,
const char *  args,
std::vector< char > &  response 
)
inlinevirtual

Reimplemented from TMFeRpcHandlerInterface.

Definition at line 403 of file fetest.cxx.

404 {
405 fMfe->Msg(MINFO, "HandleBinaryRpc", "Binary RPC cmd [%s], args [%s]", cmd, args);
406
407 // RPC handler
408
409 response.resize(8*64);
410
411 uint64_t* p64 = (uint64_t*)response.data();
412 uint64_t one = 1;
413
414 for (size_t i=0; i<response.size()/sizeof(p64[0]); i++) {
415 *p64++ = (one<<i);
416 }
417
418 return TMFeOk();
419 }
INT i
Definition mdump.cxx:32
char response[10000]
Definition melog.cxx:90
Here is the call graph for this function:

◆ HandleEndRun()

TMFeResult EqRpc::HandleEndRun ( int  run_number)
inlinevirtual

Reimplemented from TMFeEquipment.

Definition at line 449 of file fetest.cxx.

450 {
451 fMfe->Msg(MINFO, "HandleEndRun", "End run %d!", run_number);
452 EqSetStatus("Stopped", "#00FF00");
453
454 printf("end_of_run %d\n", run_number);
455
456 int fail = 0;
457 fOdbEqSettings->RI("end_of_run_fail", &fail, true);
458
459 if (fail) {
460 printf("fail_end_of_run: returning error status %d\n", fail);
461 return TMFeResult(fail, "end of run failed by ODB setting!");
462 }
463
464 double s = 0;
465 fOdbEqSettings->RD("end_of_run_sleep_sec", &s, true);
466
467 if (s) {
468 fMfe->SetWatchdogSec(s + 1);
469 int ms = int(s*1000.0);
470 printf("sleep_end_of_run: calling ss_sleep(%d)\n", ms);
471 ss_sleep(ms);
472 }
473
474 return TMFeOk();
475 }
Here is the call graph for this function:

◆ HandleInit()

TMFeResult EqRpc::HandleInit ( const std::vector< std::string > &  args)
inlinevirtual

Reimplemented from TMFeEquipment.

Definition at line 378 of file fetest.cxx.

379 {
380 fEqConfBuffer = "SYSTEM";
381 EqSetStatus("Started...", "white");
382 fMfe->Msg(MINFO, "HandleInit", std::string("Init") + " Ok!");
383 return TMFeOk();
384 }
std::string fEqConfBuffer
Definition tmfe.h:173
Here is the call graph for this function:

◆ HandlePauseRun()

TMFeResult EqRpc::HandlePauseRun ( int  run_number)
inlinevirtual

Reimplemented from TMFeEquipment.

Definition at line 477 of file fetest.cxx.

478 {
479 fMfe->Msg(MINFO, "HandlePauseRun", "Pause run %d!", run_number);
480 EqSetStatus("Stopped", "#00FF00");
481
482 printf("pause_run %d\n", run_number);
483
484 int fail = 0;
485 fOdbEqSettings->RI("pause_run_fail", &fail, true);
486
487 if (fail) {
488 printf("fail_pause_run: returning error status %d\n", fail);
489 return TMFeResult(fail, "pause run failed by ODB setting!");
490 }
491
492 return TMFeOk();
493 }
Here is the call graph for this function:

◆ HandleResumeRun()

TMFeResult EqRpc::HandleResumeRun ( int  run_number)
inlinevirtual

Reimplemented from TMFeEquipment.

Definition at line 495 of file fetest.cxx.

496 {
497 fMfe->Msg(MINFO, "HandleResumeRun", "Resume run %d!", run_number);
498 EqSetStatus("Stopped", "#00FF00");
499
500 printf("resume_run %d\n", run_number);
501
502 int fail = 0;
503 fOdbEqSettings->RI("resume_run_fail", &fail, true);
504
505 if (fail) {
506 printf("fail_resume_run: returning error status %d\n", fail);
507 return TMFeResult(fail, "resume run failed by ODB setting!");
508 }
509
510 return TMFeOk();
511 }
Here is the call graph for this function:

◆ HandleRpc()

TMFeResult EqRpc::HandleRpc ( const char *  cmd,
const char *  args,
std::string &  response 
)
inlinevirtual

Reimplemented from TMFeEquipment.

Definition at line 386 of file fetest.cxx.

387 {
388 fMfe->Msg(MINFO, "HandleRpc", "RPC cmd [%s], args [%s]", cmd, args);
389
390 // RPC handler
391
392 char tmp[256];
393 time_t now = time(NULL);
394 sprintf(tmp, "{ \"current_time\" : [ %d, \"%s\"] }", (int)now, ctime(&now));
395
396 response = tmp;
397
398 fMfe->Msg(MINFO, "HandleRpc", "RPC response [%s]", response.c_str());
399
400 return TMFeOk();
401 }
#define ctime
Definition msystem.h:271
Here is the call graph for this function:

◆ HandleStartAbortRun()

TMFeResult EqRpc::HandleStartAbortRun ( int  run_number)
inlinevirtual

Reimplemented from TMFeEquipment.

Definition at line 513 of file fetest.cxx.

514 {
515 fMfe->Msg(MINFO, "HandleStartAbortRun", "Begin run %d aborted!", run_number);
516 EqSetStatus("Stopped", "#00FF00");
517
518 printf("start abort run %d\n", run_number);
519
520 int fail = 0;
521 fOdbEqSettings->RI("start_abort_fail", &fail, true);
522
523 if (fail) {
524 printf("fail_start_abort: returning error status %d\n", fail);
525 return TMFeResult(fail, "start abort failed by ODB setting!");
526 }
527
528 return TMFeOk();
529 }
Here is the call graph for this function:

The documentation for this class was generated from the following file: