hmbdc
simplify-high-performance-messaging-programming
Public Types | Public Member Functions | Friends | List of all members
hmbdc::app::mcast::RecvTransportImpl< OutputBuffer, MsgArbitrator > Struct Template Reference

impl class More...

#include <RecvTransportEngine.hpp>

Inheritance diagram for hmbdc::app::mcast::RecvTransportImpl< OutputBuffer, MsgArbitrator >:
hmbdc::app::mcast::RecvTransport hmbdc::app::MessageHandler< RecvTransportImpl< OutputBuffer, MsgArbitrator >, Subscribe, Unsubscribe > hmbdc::app::mcast::Transport hmbdc::app::mcast::RecvTransportEngineImpl< OutputBuffer, MsgArbitrator >

Public Types

using SELF = RecvTransportImpl
 
using MH = MessageHandler< SELF, Subscribe, Unsubscribe >
 
- Public Types inherited from hmbdc::app::mcast::RecvTransport
using ptr = std::shared_ptr< RecvTransport >
 
- Public Types inherited from hmbdc::app::mcast::Transport
using ptr = std::shared_ptr< Transport >
 

Public Member Functions

 RecvTransportImpl (Config const &cfg, OutputBuffer &outputBuffer, MsgArbitrator arb=NoOpArb())
 ctor More...
 
void start ()
 start the show by schedule the mesage recv
 
void runOnce () __restrict__
 power the io_service and other things
 
void handleMessageCb (Subscribe const &t)
 only used by MH
 
void handleMessageCb (Unsubscribe const &t)
 only used by MH
 
void listenTo (Topic const &t) override
 
void stopListenTo (Topic const &t) override
 
boost::asio::ip::udp::socket & asioSocket ()
 expose so user can manipulate it More...
 
void initInThread ()
 
- Public Member Functions inherited from hmbdc::app::mcast::Transport
 Transport (Config const &cfg)
 
void initInThread ()
 
bool operator== (Transport const &other) const
 
bool operator< (Transport const &other) const
 
- Public Member Functions inherited from hmbdc::app::MessageHandler< RecvTransportImpl< OutputBuffer, MsgArbitrator >, Subscribe, Unsubscribe >
void handleMessage (MessageHead &w)
 

Friends

class NetContext
 

Additional Inherited Members

- Static Public Member Functions inherited from hmbdc::app::MessageHandler< RecvTransportImpl< OutputBuffer, MsgArbitrator >, Subscribe, Unsubscribe >
static void tryDispatch (RecvTransportImpl< OutputBuffer, MsgArbitrator > *p, MessageHead &w)
 
- Protected Types inherited from hmbdc::app::mcast::Transport
using Buffer = hmbdc::pattern::LockFreeBufferT< 1 >
 
- Protected Attributes inherited from hmbdc::app::mcast::Transport
string hmbdcName_
 
string schedPolicy_
 
int schedPriority_
 
Config const config_
 
std::shared_ptr< io_service > pIos_
 

Detailed Description

template<typename OutputBuffer, typename MsgArbitrator = RecvTransport::NoOpArb>
struct hmbdc::app::mcast::RecvTransportImpl< OutputBuffer, MsgArbitrator >

impl class

Template Parameters
OutputBuffertype of buffer to hold resulting network messages
MsgArbitratorarbitrator to decide drop or keep messages, suited to arbitrate between different recv transport. By default, keeping all

Constructor & Destructor Documentation

template<typename OutputBuffer , typename MsgArbitrator = RecvTransport::NoOpArb>
hmbdc::app::mcast::RecvTransportImpl< OutputBuffer, MsgArbitrator >::RecvTransportImpl ( Config const &  cfg,
OutputBuffer &  outputBuffer,
MsgArbitrator  arb = NoOpArb() 
)
inline

ctor

io_service could be passed in by user, in this case NO more than two threads should power this io_service instance since that would violate the thread garantee of Client, which is no callbacks are called in parallel

Parameters
cfgspecify the details of the mcast transport
outputBufferholding the results
arbarbitrator instance to decide which messages to drop and keep; it supports either raw udp packet (BEFORE topic filtering) or hmbdc udpcast message (AFTER topic filtering) level arbitration depending on which one of int operator()(void* bytes, size_t len) or int operator()(TransportMessageHeader const* header) presents in the arb

Member Function Documentation

template<typename OutputBuffer , typename MsgArbitrator = RecvTransport::NoOpArb>
boost::asio::ip::udp::socket& hmbdc::app::mcast::RecvTransportImpl< OutputBuffer, MsgArbitrator >::asioSocket ( )
inline

expose so user can manipulate it

Returns
reference to boost::asio::ip::udp::socket

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