diff options
Diffstat (limited to 'protocols/ace/RMCast/Link.h')
-rw-r--r-- | protocols/ace/RMCast/Link.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/protocols/ace/RMCast/Link.h b/protocols/ace/RMCast/Link.h new file mode 100644 index 00000000000..e6e66bbbd80 --- /dev/null +++ b/protocols/ace/RMCast/Link.h @@ -0,0 +1,62 @@ +// 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 <ace/RMCast/Stack.h> +#include <ace/RMCast/Protocol.h> + +namespace ACE_RMCast +{ + class Link : public Element + { + public: + Link (Address const& addr); + + 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: + Address addr_, self_; + ACE_SOCK_Dgram_Mcast rsock_; + ACE_SOCK_Dgram ssock_; + + ACE_Thread_Manager recv_mgr_; + + // Simulator. + // + Message_ptr hold_; + Mutex mutex_; + }; +} + + +#endif // ACE_RMCAST_LINK_H |