Transport protocol to transfer an IPbus buffer via ControlHub. More...
#include <uhal/ProtocolControlHub.hpp>
Classes | |
struct | tpreamble |
A struct representing the preamble which will be prepended to an IPbus buffer for the benefit of the Control Hub. More... | |
Public Member Functions | |
ControlHub (const std::string &aId, const URI &aUri) | |
Constructor. More... | |
virtual | ~ControlHub () |
Destructor. More... | |
Protected Member Functions | |
virtual void | preamble (boost::shared_ptr< Buffers > aBuffers) |
Add a preamble to an IPbus buffer. More... | |
virtual uint32_t | getPreambleSize () |
Get the size of the preamble added by this protocol layer. More... | |
virtual void | predispatch (boost::shared_ptr< Buffers > aBuffers) |
Finalize an IPbus buffer before it is transmitted. More... | |
virtual exception::exception * | validate (uint8_t *aSendBufferStart, uint8_t *aSendBufferEnd, std::deque< std::pair< uint8_t *, uint32_t > >::iterator aReplyStartIt, std::deque< std::pair< uint8_t *, uint32_t > >::iterator aReplyEndIt) |
Function which the dispatch calls when the reply is received to check that the headers are as expected. More... | |
virtual uint32_t | getMaxNumberOfBuffers () |
Returns the maximum number of buffers that should be in-flight from the uHAL client at any given time. More... | |
virtual void | dispatchExceptionHandler () |
Function which tidies up this protocol layer in the event of an exception. More... | |
Static Private Member Functions | |
static void | translateErrorCode (std::ostream &aStream, const uint16_t &aErrorCode) |
Private Attributes | |
uint32_t | mDeviceIPaddress |
The IP address of the target device that is connected to the Control Hub. More... | |
uint16_t | mDevicePort |
The port number of the target device that is connected to the Control Hub. More... | |
std::deque< tpreamble > | mPreambles |
A queue of preample structs making the memory used by the preambles persistent during the dispatch. Must lock mPreamblesMutex when accessing this deque. More... | |
boost::mutex | mPreamblesMutex |
Mutex to be used when accessing mPreambles. More... | |
Transport protocol to transfer an IPbus buffer via ControlHub.
Definition at line 85 of file ProtocolControlHub.hpp.
uhal::ControlHub< InnerProtocol >::ControlHub | ( | const std::string & | aId, |
const URI & | aUri | ||
) |
Constructor.
aId | the uinique identifier that the client will be given. |
aUri | a struct containing the full URI of the target. |
Definition at line 146 of file ProtocolControlHub.cpp.
References uhal::ExtractTargetID(), uhal::ControlHub< InnerProtocol >::mDeviceIPaddress, and uhal::ControlHub< InnerProtocol >::mDevicePort.
|
virtual |
Destructor.
Definition at line 158 of file ProtocolControlHub.cpp.
|
protectedvirtual |
Function which tidies up this protocol layer in the event of an exception.
Definition at line 288 of file ProtocolControlHub.cpp.
|
protectedvirtual |
Returns the maximum number of buffers that should be in-flight from the uHAL client at any given time.
Definition at line 281 of file ProtocolControlHub.cpp.
|
protectedvirtual |
Get the size of the preamble added by this protocol layer.
Definition at line 198 of file ProtocolControlHub.cpp.
|
protectedvirtual |
Add a preamble to an IPbus buffer.
aBuffers | a buffer to which to add the preamble |
Definition at line 164 of file ProtocolControlHub.cpp.
References uhal::ControlHub< InnerProtocol >::tpreamble::mReplyChunkByteCounter, uhal::ControlHub< InnerProtocol >::tpreamble::mReplyDeviceIPaddress, uhal::ControlHub< InnerProtocol >::tpreamble::mReplyDevicePort, uhal::ControlHub< InnerProtocol >::tpreamble::mReplyErrorCode, and uhal::ControlHub< InnerProtocol >::tpreamble::mSendWordCountPtr.
|
protectedvirtual |
Finalize an IPbus buffer before it is transmitted.
aBuffers | a buffer on which to do the predispatch operation |
Definition at line 205 of file ProtocolControlHub.cpp.
References uhal::ControlHub< InnerProtocol >::tpreamble::mSendWordCountPtr.
|
staticprivate |
Definition at line 299 of file ProtocolControlHub.cpp.
|
protectedvirtual |
Function which the dispatch calls when the reply is received to check that the headers are as expected.
aSendBufferStart | a pointer to the start of the first word of IPbus data which was sent (i.e. with no preamble) |
aSendBufferEnd | a pointer to the end of the last word of IPbus data which was sent |
aReplyStartIt | an iterator to the start of the list of memory locations in to which the reply was written |
aReplyEndIt | an iterator to the end (one past last valid entry) of the list of memory locations in to which the reply was written |
Definition at line 216 of file ProtocolControlHub.cpp.
References uhal::Integer(), uhal::log(), uhal::Quote(), and uhal::tests::uri.
|
private |
The IP address of the target device that is connected to the Control Hub.
Definition at line 148 of file ProtocolControlHub.hpp.
Referenced by uhal::ControlHub< InnerProtocol >::ControlHub().
|
private |
The port number of the target device that is connected to the Control Hub.
Definition at line 151 of file ProtocolControlHub.hpp.
Referenced by uhal::ControlHub< InnerProtocol >::ControlHub().
|
private |
A queue of preample structs making the memory used by the preambles persistent during the dispatch. Must lock mPreamblesMutex when accessing this deque.
Definition at line 170 of file ProtocolControlHub.hpp.
|
private |
Mutex to be used when accessing mPreambles.
Definition at line 172 of file ProtocolControlHub.hpp.