diff options
Diffstat (limited to 'ACE/protocols/ace/RMCast/Link.h')
-rw-r--r-- | ACE/protocols/ace/RMCast/Link.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/ACE/protocols/ace/RMCast/Link.h b/ACE/protocols/ace/RMCast/Link.h new file mode 100644 index 00000000000..6397322556f --- /dev/null +++ b/ACE/protocols/ace/RMCast/Link.h @@ -0,0 +1,73 @@ +// file : ace/RMCast/Link.h +// author : Boris Kolpackov <boris@kolpackov.net> +// cvs-id : $Id$ + +#ifndef ACE_RMCAST_LINK_H +#define ACE_RMCAST_LINK_H + +#include "ace/SOCK_Dgram.h" +#include "ace/SOCK_Dgram_Mcast.h" + +#include "ace/Thread_Manager.h" + +#include "Stack.h" +#include "Protocol.h" +#include "Parameters.h" + +namespace ACE_RMCast +{ + class Link : public Element + { + public: + ~Link (); + + Link (Address const& addr, Parameters const& params); + + virtual void + in_start (In_Element* in); + + virtual void + out_start (Out_Element* out); + + virtual void + in_stop (); + + public: + virtual void + send (Message_ptr m); + + private: + virtual void + send_ (Message_ptr m); + + private: + void + recv (); + + static ACE_THR_FUNC_RETURN + recv_thunk (void* obj); + + private: + virtual void + recv (Message_ptr); + + private: + Parameters const& params_; + + Address addr_, self_; + ACE_SOCK_Dgram_Mcast rsock_; + ACE_SOCK_Dgram ssock_; + + bool stop_; + ACE_Thread_Manager recv_mgr_; + + // Simulator. + // + Message_ptr hold_; + + Mutex mutex_; + }; +} + + +#endif // ACE_RMCAST_LINK_H |