#include <UdpTransport.h>
Data Structures | |
struct | ResendInfo |
Public Member Functions | |
UdpDataSocket (UdpDevice *dev, dabc::Reference port, dabc::Command cmd, int fd, int fmt) | |
virtual | ~UdpDataSocket () |
virtual void | ProcessEvent (const dabc::EventId &) |
virtual bool | ProvidesInput () |
virtual bool | ProvidesOutput () |
virtual bool | Recv (dabc::Buffer &buf) |
virtual unsigned | RecvQueueSize () const |
virtual dabc::Buffer & | RecvBuffer (unsigned indx) const |
virtual bool | Send (const dabc::Buffer &buf) |
virtual unsigned | SendQueueSize () |
virtual unsigned | MaxSendSegments () |
virtual void | StartTransport () |
virtual void | StopTransport () |
Protected Types | |
enum | EUdpEvents { evntStartTransport = evntSocketLast + 1, evntStopTransport, evntConfirmCmd, evntFillBuffer } |
enum | EDaqState { daqInit, daqStarting, daqRuns, daqStopping, daqFails } |
Protected Member Functions | |
bool | daqActive () const |
virtual bool | ReplyCommand (dabc::Command cmd) |
virtual void | ProcessPoolChanged (dabc::MemoryPool *pool) |
virtual bool | ProcessPoolRequest () |
virtual double | ProcessTimeout (double last_diff) |
void | AddBuffersToQueue (bool checkanyway=true) |
bool | CheckNextRequest (bool check_retrans=true) |
void | AddDataPacket (int len, void *tgt) |
void | CompressBuffer (dabc::Buffer &buf) |
void | CheckReadyBuffers (bool doflush=false) |
void | FinishTgtBuffer () |
void | ResetDaq () |
bool | prepareForSuspend () |
virtual int | GetParameter (const char *name) |
void | setFlushTimeout (double tmout) |
double | getFlushTimeout () const |
Protected Attributes | |
UdpDevice * | fDev |
dabc::Mutex | fQueueMutex |
dabc::BuffersQueue | fQueue |
unsigned | fReadyBuffers |
unsigned | fTransportBuffers |
dabc::Buffer * | fTgtBuf |
unsigned | fTgtBufIndx |
unsigned | fTgtShift |
unsigned | fTgtZeroShift |
UdpDataPacket | fTgtHdr |
char * | fTgtPtr |
uint32_t | fTgtNextId |
uint32_t | fTgtTailId |
bool | fTgtCheckGap |
char | fTempBuf [2000] |
dabc::Queue< ResendInfo > | fResend |
EDaqState | daqState |
bool | daqCheckStop |
UdpDataPacketFull | fRecvBuf |
unsigned | fBufferSize |
unsigned | fTransferWindow |
dabc::MemoryPoolRef | fPool |
dabc::TimeStamp | lastRequestTm |
bool | lastRequestSeen |
uint32_t | lastRequestId |
uint32_t | lastSendFrontId |
unsigned | rocNumber |
uint64_t | fTotalRecvPacket |
uint64_t | fTotalResubmPacket |
double | fFlushTimeout |
dabc::TimeStamp | fLastDelivery |
base::OperList | fStartList |
int | fFormat |
bool | fMbsHeader |
int | fBufCounter |
Friends | |
class | UdpDevice |
Definition at line 47 of file UdpTransport.h.
enum roc::UdpDataSocket::EDaqState [protected] |
Definition at line 60 of file UdpTransport.h.
enum roc::UdpDataSocket::EUdpEvents [protected] |
Definition at line 55 of file UdpTransport.h.
roc::UdpDataSocket::UdpDataSocket | ( | UdpDevice * | dev, | |
dabc::Reference | port, | |||
dabc::Command | cmd, | |||
int | fd, | |||
int | fmt | |||
) |
Definition at line 34 of file UdpTransport.cxx.
References daqCheckStop, daqState, fBufCounter, fBufferSize, fFlushTimeout, fLastDelivery, fMbsHeader, fPool, fReadyBuffers, fResend, fTgtBufIndx, fTgtCheckGap, fTgtNextId, fTgtPtr, fTgtShift, fTgtTailId, fTgtZeroShift, fTotalRecvPacket, fTotalResubmPacket, fTransferWindow, lastRequestTm, rocNumber, UDP_DATA_SIZE, and roc::xmlTransferWindow.
roc::UdpDataSocket::~UdpDataSocket | ( | ) | [virtual] |
Definition at line 100 of file UdpTransport.cxx.
References roc::UdpDevice::fDataCh, fDev, and ResetDaq().
void roc::UdpDataSocket::AddBuffersToQueue | ( | bool | checkanyway = true |
) | [protected] |
Definition at line 274 of file UdpTransport.cxx.
References CheckNextRequest(), fBufferSize, fFormat, fMbsHeader, fPool, fQueue, fQueueMutex, fTgtBuf, fTgtPtr, fTgtShift, fTgtZeroShift, fTransportBuffers, and roc::rbt_RawRocData.
Referenced by CheckReadyBuffers(), ProcessEvent(), and ProcessTimeout().
void roc::UdpDataSocket::AddDataPacket | ( | int | len, | |
void * | tgt | |||
) | [protected] |
Definition at line 469 of file UdpTransport.cxx.
References roc::Iterator::assign(), roc::UdpDataSocket::ResendInfo::buf, roc::UdpDataSocket::ResendInfo::bufindx, CheckNextRequest(), CheckReadyBuffers(), daqCheckStop, fBufferSize, fDev, fFormat, FinishTgtBuffer(), fQueue, fQueueMutex, fReadyBuffers, fResend, fTgtBuf, fTgtBufIndx, fTgtCheckGap, fTgtHdr, fTgtNextId, fTgtPtr, fTgtShift, fTgtTailId, fTgtZeroShift, fTotalResubmPacket, fTransportBuffers, roc::Message::isStopDaqMsg(), roc::UdpDataPacket::lastreqid, lastRequestId, lastRequestSeen, roc::UdpDataSocket::ResendInfo::lasttm, roc::Iterator::msg(), roc::Iterator::next(), roc::UdpDataPacket::nummsg, roc::UdpDataSocket::ResendInfo::numtry, roc::UdpDataSocket::ResendInfo::pktid, roc::UdpDataPacket::pktid, roc::UdpDataSocket::ResendInfo::ptr, roc::Board::rocNumber(), and UDP_DATA_SIZE.
Referenced by ProcessEvent().
bool roc::UdpDataSocket::CheckNextRequest | ( | bool | check_retrans = true |
) | [protected] |
Definition at line 308 of file UdpTransport.cxx.
References roc::Message::copyto(), daqActive(), fBufferSize, roc::UdpDevice::fCtrlCh, fDev, fFormat, fResend, roc::UdpDataRequest::frontpktid, fTgtBuf, fTgtBufIndx, fTgtCheckGap, fTgtNextId, fTgtShift, fTgtTailId, fTransferWindow, fTransportBuffers, lastRequestId, lastRequestSeen, lastRequestTm, lastSendFrontId, roc::UdpDataSocket::ResendInfo::lasttm, MAX_UDP_PAYLOAD, roc::MSG_SYS, roc::UdpDataRequest::numresend, roc::UdpDataSocket::ResendInfo::numtry, roc::UdpDataRequest::password, roc::UdpDataSocket::ResendInfo::pktid, roc::UdpDataSocket::ResendInfo::ptr, roc::UdpDataRequest::reqpktid, roc::UdpDataRequestFull::resend, ROC_PASSWORD, rocNumber, roc::UdpControlSocket::SetLastSendTime(), roc::Message::setMessageType(), roc::Message::setRocNumber(), roc::Message::setSysMesType(), roc::SYSMSG_PACKETLOST, roc::UdpDataRequest::tailpktid, and UDP_DATA_SIZE.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckReadyBuffers(), and ProcessTimeout().
void roc::UdpDataSocket::CheckReadyBuffers | ( | bool | doflush = false |
) | [protected] |
Definition at line 677 of file UdpTransport.cxx.
References AddBuffersToQueue(), CheckNextRequest(), CompressBuffer(), FinishTgtBuffer(), fLastDelivery, fQueue, fQueueMutex, fReadyBuffers, fResend, fTgtBuf, fTgtBufIndx, fTgtCheckGap, fTgtPtr, fTgtShift, fTgtZeroShift, and fTransportBuffers.
Referenced by AddDataPacket(), and ProcessTimeout().
void roc::UdpDataSocket::CompressBuffer | ( | dabc::Buffer & | buf | ) | [protected] |
Definition at line 618 of file UdpTransport.cxx.
References roc::Iterator::assign(), fFormat, roc::Message::isNopMsg(), roc::Iterator::msg(), roc::Iterator::next(), and roc::Message::RawSize().
Referenced by CheckReadyBuffers().
bool roc::UdpDataSocket::daqActive | ( | ) | const [inline, protected] |
Definition at line 148 of file UdpTransport.h.
References daqState, and fDev.
Referenced by CheckNextRequest(), prepareForSuspend(), ProcessEvent(), and ProcessTimeout().
void roc::UdpDataSocket::FinishTgtBuffer | ( | ) | [protected] |
Definition at line 648 of file UdpTransport.cxx.
References fBufCounter, fFormat, fMbsHeader, fTgtBuf, fTgtBufIndx, fTgtPtr, fTgtShift, roc::proc_RawData, and rocNumber.
Referenced by AddDataPacket(), and CheckReadyBuffers().
double roc::UdpDataSocket::getFlushTimeout | ( | ) | const [inline, protected] |
Definition at line 174 of file UdpTransport.h.
References fFlushTimeout.
int roc::UdpDataSocket::GetParameter | ( | const char * | name | ) | [protected, virtual] |
Definition at line 747 of file UdpTransport.cxx.
References fDev, fFormat, roc::Board::rocNumber(), roc::xmlMsgFormat, roc::xmlRocNumber, and roc::xmlTransportKind.
virtual unsigned roc::UdpDataSocket::MaxSendSegments | ( | ) | [inline, virtual] |
Definition at line 190 of file UdpTransport.h.
bool roc::UdpDataSocket::prepareForSuspend | ( | ) | [protected] |
Definition at line 740 of file UdpTransport.cxx.
References daqActive(), and daqCheckStop.
Referenced by roc::UdpDevice::ExecuteCommand().
void roc::UdpDataSocket::ProcessEvent | ( | const dabc::EventId & | evnt | ) | [virtual] |
Definition at line 108 of file UdpTransport.cxx.
References AddBuffersToQueue(), AddDataPacket(), base::OperList::addPut(), base::OperList::clear(), daqActive(), daqStarting, daqState, daqStopping, evntConfirmCmd, evntFillBuffer, evntStartTransport, evntStopTransport, fDev, fLastDelivery, fStartList, fTempBuf, fTgtBuf, fTgtBufIndx, fTgtHdr, fTgtPtr, fTgtShift, fTotalRecvPacket, ResetDaq(), ROC_ETH_START_DAQ, ROC_ETH_STOP_DAQ, ROC_NX_FIFO_RESET, and UDP_DATA_SIZE.
virtual void roc::UdpDataSocket::ProcessPoolChanged | ( | dabc::MemoryPool * | pool | ) | [inline, protected, virtual] |
Definition at line 152 of file UdpTransport.h.
bool roc::UdpDataSocket::ProcessPoolRequest | ( | ) | [protected, virtual] |
Definition at line 254 of file UdpTransport.cxx.
References evntFillBuffer.
double roc::UdpDataSocket::ProcessTimeout | ( | double | last_diff | ) | [protected, virtual] |
Definition at line 418 of file UdpTransport.cxx.
References AddBuffersToQueue(), CheckNextRequest(), CheckReadyBuffers(), daqActive(), fFlushTimeout, fLastDelivery, and fTgtBuf.
virtual bool roc::UdpDataSocket::ProvidesInput | ( | ) | [inline, virtual] |
Definition at line 182 of file UdpTransport.h.
virtual bool roc::UdpDataSocket::ProvidesOutput | ( | ) | [inline, virtual] |
Definition at line 183 of file UdpTransport.h.
bool roc::UdpDataSocket::Recv | ( | dabc::Buffer & | buf | ) | [virtual] |
Definition at line 217 of file UdpTransport.cxx.
References evntFillBuffer, fQueue, fQueueMutex, and fReadyBuffers.
dabc::Buffer & roc::UdpDataSocket::RecvBuffer | ( | unsigned | indx | ) | const [virtual] |
Definition at line 244 of file UdpTransport.cxx.
References fQueue, fQueueMutex, and fReadyBuffers.
unsigned roc::UdpDataSocket::RecvQueueSize | ( | ) | const [virtual] |
Definition at line 237 of file UdpTransport.cxx.
References fQueueMutex, and fReadyBuffers.
bool roc::UdpDataSocket::ReplyCommand | ( | dabc::Command | cmd | ) | [protected, virtual] |
Definition at line 206 of file UdpTransport.cxx.
References evntConfirmCmd.
void roc::UdpDataSocket::ResetDaq | ( | ) | [protected] |
Definition at line 439 of file UdpTransport.cxx.
References daqCheckStop, daqState, fLastDelivery, fQueue, fQueueMutex, fReadyBuffers, fResend, fTgtBuf, fTgtBufIndx, fTgtCheckGap, fTgtNextId, fTgtPtr, fTgtShift, fTgtTailId, fTransportBuffers, lastRequestId, lastRequestSeen, lastRequestTm, and lastSendFrontId.
Referenced by ProcessEvent(), and ~UdpDataSocket().
virtual bool roc::UdpDataSocket::Send | ( | const dabc::Buffer & | buf | ) | [inline, virtual] |
Definition at line 188 of file UdpTransport.h.
virtual unsigned roc::UdpDataSocket::SendQueueSize | ( | ) | [inline, virtual] |
Definition at line 189 of file UdpTransport.h.
void roc::UdpDataSocket::setFlushTimeout | ( | double | tmout | ) | [inline, protected] |
Definition at line 173 of file UdpTransport.h.
References fFlushTimeout.
Referenced by roc::UdpDevice::ExecuteCommand().
void roc::UdpDataSocket::StartTransport | ( | ) | [virtual] |
Definition at line 260 of file UdpTransport.cxx.
References evntStartTransport.
void roc::UdpDataSocket::StopTransport | ( | ) | [virtual] |
Definition at line 267 of file UdpTransport.cxx.
References evntStopTransport, and fTotalRecvPacket.
friend class UdpDevice [friend] |
Definition at line 50 of file UdpTransport.h.
bool roc::UdpDataSocket::daqCheckStop [protected] |
Definition at line 118 of file UdpTransport.h.
Referenced by AddDataPacket(), prepareForSuspend(), ResetDaq(), and UdpDataSocket().
EDaqState roc::UdpDataSocket::daqState [protected] |
Definition at line 117 of file UdpTransport.h.
Referenced by daqActive(), ProcessEvent(), ResetDaq(), and UdpDataSocket().
int roc::UdpDataSocket::fBufCounter [protected] |
Definition at line 146 of file UdpTransport.h.
Referenced by FinishTgtBuffer(), and UdpDataSocket().
unsigned roc::UdpDataSocket::fBufferSize [protected] |
Definition at line 122 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckNextRequest(), and UdpDataSocket().
UdpDevice* roc::UdpDataSocket::fDev [protected] |
Definition at line 96 of file UdpTransport.h.
Referenced by AddDataPacket(), CheckNextRequest(), daqActive(), GetParameter(), ProcessEvent(), ~UdpDataSocket(), and roc::UdpDevice::~UdpDevice().
double roc::UdpDataSocket::fFlushTimeout [protected] |
Definition at line 138 of file UdpTransport.h.
Referenced by getFlushTimeout(), ProcessTimeout(), setFlushTimeout(), and UdpDataSocket().
int roc::UdpDataSocket::fFormat [protected] |
Definition at line 143 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckNextRequest(), CompressBuffer(), FinishTgtBuffer(), and GetParameter().
dabc::TimeStamp roc::UdpDataSocket::fLastDelivery [protected] |
Definition at line 139 of file UdpTransport.h.
Referenced by CheckReadyBuffers(), ProcessEvent(), ProcessTimeout(), ResetDaq(), and UdpDataSocket().
bool roc::UdpDataSocket::fMbsHeader [protected] |
Definition at line 145 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), FinishTgtBuffer(), and UdpDataSocket().
dabc::MemoryPoolRef roc::UdpDataSocket::fPool [protected] |
Definition at line 126 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), and UdpDataSocket().
dabc::BuffersQueue roc::UdpDataSocket::fQueue [protected] |
Definition at line 98 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckReadyBuffers(), Recv(), RecvBuffer(), and ResetDaq().
dabc::Mutex roc::UdpDataSocket::fQueueMutex [protected] |
Definition at line 97 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckReadyBuffers(), Recv(), RecvBuffer(), RecvQueueSize(), and ResetDaq().
unsigned roc::UdpDataSocket::fReadyBuffers [protected] |
Definition at line 100 of file UdpTransport.h.
Referenced by AddDataPacket(), CheckReadyBuffers(), Recv(), RecvBuffer(), RecvQueueSize(), ResetDaq(), and UdpDataSocket().
UdpDataPacketFull roc::UdpDataSocket::fRecvBuf [protected] |
Definition at line 120 of file UdpTransport.h.
dabc::Queue<ResendInfo> roc::UdpDataSocket::fResend [protected] |
Definition at line 115 of file UdpTransport.h.
Referenced by AddDataPacket(), CheckNextRequest(), CheckReadyBuffers(), ResetDaq(), and UdpDataSocket().
base::OperList roc::UdpDataSocket::fStartList [protected] |
Definition at line 141 of file UdpTransport.h.
Referenced by ProcessEvent().
char roc::UdpDataSocket::fTempBuf[2000] [protected] |
Definition at line 113 of file UdpTransport.h.
Referenced by ProcessEvent().
dabc::Buffer* roc::UdpDataSocket::fTgtBuf [protected] |
Definition at line 103 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckNextRequest(), CheckReadyBuffers(), FinishTgtBuffer(), ProcessEvent(), ProcessTimeout(), and ResetDaq().
unsigned roc::UdpDataSocket::fTgtBufIndx [protected] |
Definition at line 104 of file UdpTransport.h.
Referenced by AddDataPacket(), CheckNextRequest(), CheckReadyBuffers(), FinishTgtBuffer(), ProcessEvent(), ResetDaq(), and UdpDataSocket().
bool roc::UdpDataSocket::fTgtCheckGap [protected] |
Definition at line 111 of file UdpTransport.h.
Referenced by AddDataPacket(), CheckNextRequest(), CheckReadyBuffers(), ResetDaq(), and UdpDataSocket().
UdpDataPacket roc::UdpDataSocket::fTgtHdr [protected] |
Definition at line 107 of file UdpTransport.h.
Referenced by AddDataPacket(), and ProcessEvent().
uint32_t roc::UdpDataSocket::fTgtNextId [protected] |
Definition at line 109 of file UdpTransport.h.
Referenced by AddDataPacket(), CheckNextRequest(), ResetDaq(), and UdpDataSocket().
char* roc::UdpDataSocket::fTgtPtr [protected] |
Definition at line 108 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckReadyBuffers(), FinishTgtBuffer(), ProcessEvent(), ResetDaq(), and UdpDataSocket().
unsigned roc::UdpDataSocket::fTgtShift [protected] |
Definition at line 105 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckNextRequest(), CheckReadyBuffers(), FinishTgtBuffer(), ProcessEvent(), ResetDaq(), and UdpDataSocket().
uint32_t roc::UdpDataSocket::fTgtTailId [protected] |
Definition at line 110 of file UdpTransport.h.
Referenced by AddDataPacket(), CheckNextRequest(), ResetDaq(), and UdpDataSocket().
unsigned roc::UdpDataSocket::fTgtZeroShift [protected] |
Definition at line 106 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckReadyBuffers(), and UdpDataSocket().
uint64_t roc::UdpDataSocket::fTotalRecvPacket [protected] |
Definition at line 135 of file UdpTransport.h.
Referenced by ProcessEvent(), StopTransport(), and UdpDataSocket().
uint64_t roc::UdpDataSocket::fTotalResubmPacket [protected] |
Definition at line 136 of file UdpTransport.h.
Referenced by AddDataPacket(), and UdpDataSocket().
unsigned roc::UdpDataSocket::fTransferWindow [protected] |
Definition at line 123 of file UdpTransport.h.
Referenced by CheckNextRequest(), and UdpDataSocket().
unsigned roc::UdpDataSocket::fTransportBuffers [protected] |
Definition at line 101 of file UdpTransport.h.
Referenced by AddBuffersToQueue(), AddDataPacket(), CheckNextRequest(), CheckReadyBuffers(), and ResetDaq().
uint32_t roc::UdpDataSocket::lastRequestId [protected] |
Definition at line 130 of file UdpTransport.h.
Referenced by AddDataPacket(), CheckNextRequest(), and ResetDaq().
bool roc::UdpDataSocket::lastRequestSeen [protected] |
Definition at line 129 of file UdpTransport.h.
Referenced by AddDataPacket(), CheckNextRequest(), and ResetDaq().
dabc::TimeStamp roc::UdpDataSocket::lastRequestTm [protected] |
Definition at line 128 of file UdpTransport.h.
Referenced by CheckNextRequest(), ResetDaq(), and UdpDataSocket().
uint32_t roc::UdpDataSocket::lastSendFrontId [protected] |
Definition at line 131 of file UdpTransport.h.
Referenced by CheckNextRequest(), and ResetDaq().
unsigned roc::UdpDataSocket::rocNumber [protected] |
Definition at line 133 of file UdpTransport.h.
Referenced by CheckNextRequest(), FinishTgtBuffer(), and UdpDataSocket().