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 ~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
 
TMFE * fMfe = NULL
 
TMFrontend * fFe = 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.
 
TMEventBuffer * fEqEventBuffer = 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
 
TMFeCommon * fCommon
 
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:172
TMFeEquipment()
Definition tmfe.h:256

◆ ~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:214
TMFE * fMfe
Definition tmfe.h:208
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:3707
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 TMFeEquipment.

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:174
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: