#include <BUFUInterface.h>
Public Member Functions | |
void | allocate (const UIntVec_t &fuResourceIds, xdaq::ApplicationDescriptor *fuAppDesc) |
void | discard (UInt_t buResourceId) |
FU->BU DISCARD. | |
bool | registerBU (BaseBU *bu, Logger log) |
register the BU to the interface | |
bool | registerFU (BaseFU *fu, Logger log) |
register the FU to the interface | |
void | take (xdaq::ApplicationDescriptor *fuAppDesc, toolbox::mem::Reference *bufRef) |
BU->FU TAKE. | |
~BUFUInterface () | |
Static Public Member Functions | |
static BUFUInterface * | forceNewInstance () |
static BUFUInterface * | instance () |
returns a pointer to a singleton instance of the interface | |
Private Member Functions | |
BUFUInterface () | |
private constructor | |
bool | directConnection () const |
checks if both BU and FU are connected to the interface | |
Private Attributes | |
BaseBU * | bu_ |
pointer to connected BU, using BaseBU interface | |
bool | buConn_ |
flags for BU, FU connection | |
Logger | buLogger_ |
loggers | |
BaseFU * | fu_ |
pointer to connected ResourceBroker(FU), using BaseFU interface | |
bool | fuConn_ |
Logger | fuLogger_ |
Static Private Attributes | |
static BUFUInterface * | instance_ = 0 |
pointer to unique instance |
Definition at line 19 of file BUFUInterface.h.
BUFUInterface::~BUFUInterface | ( | ) |
Definition at line 19 of file BUFUInterface.cc.
References instance_.
{ // delete instance_; instance_ = 0; }
BUFUInterface::BUFUInterface | ( | ) | [private] |
private constructor
Definition at line 155 of file BUFUInterface.cc.
Referenced by forceNewInstance(), and instance().
void BUFUInterface::allocate | ( | const UIntVec_t & | fuResourceIds, |
xdaq::ApplicationDescriptor * | fuAppDesc | ||
) |
FU->BU ALLOCATE the FU application description is required by the BU when registering the requesting FU
Definition at line 79 of file BUFUInterface.cc.
References bu_, evf::BaseFU::buildAndSendAllocate(), gather_cfg::cout, evf::BaseBU::DIRECT_BU_ALLOCATE(), directConnection(), and fu_.
{ // direct connection -> method call if (directConnection()) { bu_->DIRECT_BU_ALLOCATE(fuResourceIds, fuAppDesc); #ifdef BUFU_DEBUG std::cout << "ALLOCATE FU->BU message sent directly!" << std::endl; #endif } // no connection -> line protocol else { // call FU to build I2O allocate message and send it fu_->buildAndSendAllocate(fuResourceIds); #ifdef BUFU_DEBUG std::cout << "ALLOCATE FU->BU message sent through I2O!" << std::endl; #endif } }
bool evf::BUFUInterface::directConnection | ( | ) | const [inline, private] |
checks if both BU and FU are connected to the interface
Definition at line 60 of file BUFUInterface.h.
Referenced by allocate(), discard(), registerBU(), registerFU(), and take().
void BUFUInterface::discard | ( | UInt_t | buResourceId | ) |
FU->BU DISCARD.
Definition at line 105 of file BUFUInterface.cc.
References bu_, evf::BaseFU::buildAndSendDiscard(), gather_cfg::cout, evf::BaseBU::DIRECT_BU_DISCARD(), directConnection(), and fu_.
{ // direct connection -> method call if (directConnection()) { bu_->DIRECT_BU_DISCARD(buResourceId); #ifdef BUFU_DEBUG std::cout << "DISCARD FU->BU message sent directly!" << std::endl; #endif } // no connection -> line protocol else { // call FU to build I2O discard and send it fu_->buildAndSendDiscard(buResourceId); #ifdef BUFU_DEBUG std::cout << "DISCARD FU->BU message sent through I2O!" << std::endl; #endif } }
BUFUInterface * BUFUInterface::forceNewInstance | ( | ) | [static] |
always returns a new instance. used to force I2O communication between BU and FU in the same process
Definition at line 34 of file BUFUInterface.cc.
References BUFUInterface().
{ return new BUFUInterface(); }
BUFUInterface * BUFUInterface::instance | ( | ) | [static] |
returns a pointer to a singleton instance of the interface
Definition at line 25 of file BUFUInterface.cc.
References BUFUInterface(), and instance_.
{ if (instance_ == 0) { instance_ = new BUFUInterface(); } return instance_; }
bool BUFUInterface::registerBU | ( | BaseBU * | bu, |
Logger | log | ||
) |
register the BU to the interface
Definition at line 39 of file BUFUInterface.cc.
References bu_, buConn_, buLogger_, directConnection(), funct::log(), and summarizeEdmComparisonLogfiles::succeeded.
{ bool succeeded = false; if (bu != 0) { bu_ = bu; buLogger_ = log; buConn_ = true; succeeded = true; #ifdef BUFU_VERBOSE LOG4CPLUS_INFO(buLogger_, "BU registered to BUFU interface!"); if (directConnection()) { LOG4CPLUS_INFO(buLogger_, "BU and FU : DIRECTLY CONNECTED!"); } #endif } return succeeded; }
bool BUFUInterface::registerFU | ( | BaseFU * | fu, |
Logger | log | ||
) |
register the FU to the interface
Definition at line 59 of file BUFUInterface.cc.
References buLogger_, directConnection(), fu_, fuConn_, fuLogger_, funct::log(), and summarizeEdmComparisonLogfiles::succeeded.
{ bool succeeded = false; if (fu != 0) { fu_ = fu; fuLogger_ = log; fuConn_ = true; succeeded = true; #ifdef BUFU_VERBOSE LOG4CPLUS_INFO(fuLogger_, "FU registered to BUFU interface!"); if (directConnection()) { LOG4CPLUS_INFO(buLogger_, "BU and FU : DIRECTLY CONNECTED!"); } #endif } return succeeded; }
void BUFUInterface::take | ( | xdaq::ApplicationDescriptor * | fuAppDesc, |
toolbox::mem::Reference * | bufRef | ||
) |
BU->FU TAKE.
Definition at line 130 of file BUFUInterface.cc.
References bu_, gather_cfg::cout, directConnection(), fu_, evf::BaseFU::I2O_FU_TAKE_Callback(), and evf::BaseBU::postI2OFrame().
{ // direct connection -> method call if (directConnection()) { fu_->I2O_FU_TAKE_Callback(bufRef); #ifdef BUFU_DEBUG std::cout << "TAKE BU->FU message sent directly!" << std::endl; #endif } // no connection -> line protocol else { bu_->postI2OFrame(fuAppDesc, bufRef); #ifdef BUFU_DEBUG std::cout << "TAKE BU->FU message sent through I2O!" << std::endl; #endif } }
BaseBU* evf::BUFUInterface::bu_ [private] |
pointer to connected BU, using BaseBU interface
Definition at line 68 of file BUFUInterface.h.
Referenced by allocate(), discard(), registerBU(), and take().
bool evf::BUFUInterface::buConn_ [private] |
flags for BU, FU connection
Definition at line 74 of file BUFUInterface.h.
Referenced by registerBU().
Logger evf::BUFUInterface::buLogger_ [private] |
loggers
Definition at line 72 of file BUFUInterface.h.
Referenced by registerBU(), and registerFU().
BaseFU* evf::BUFUInterface::fu_ [private] |
pointer to connected ResourceBroker(FU), using BaseFU interface
Definition at line 70 of file BUFUInterface.h.
Referenced by allocate(), discard(), registerFU(), and take().
bool evf::BUFUInterface::fuConn_ [private] |
Definition at line 74 of file BUFUInterface.h.
Referenced by registerFU().
Logger evf::BUFUInterface::fuLogger_ [private] |
Definition at line 72 of file BUFUInterface.h.
Referenced by registerFU().
BUFUInterface * evf::BUFUInterface::instance_ = 0 [static, private] |
pointer to unique instance
Definition at line 51 of file BUFUInterface.h.
Referenced by instance(), and ~BUFUInterface().