Link.h

Go to the documentation of this file.
00001 // file      : ace/RMCast/Link.h
00002 // author    : Boris Kolpackov <boris@kolpackov.net>
00003 // cvs-id    : Link.h,v 1.8 2006/06/28 09:29:26 boris Exp
00004 
00005 #ifndef ACE_RMCAST_LINK_H
00006 #define ACE_RMCAST_LINK_H
00007 
00008 #include "ace/SOCK_Dgram.h"
00009 #include "ace/SOCK_Dgram_Mcast.h"
00010 
00011 #include "ace/Thread_Manager.h"
00012 
00013 #include "Stack.h"
00014 #include "Protocol.h"
00015 #include "Parameters.h"
00016 
00017 namespace ACE_RMCast
00018 {
00019   class Link : public Element
00020   {
00021   public:
00022     ~Link ();
00023 
00024     Link (Address const& addr, Parameters const& params);
00025 
00026     virtual void
00027     in_start (In_Element* in);
00028 
00029     virtual void
00030     out_start (Out_Element* out);
00031 
00032     virtual void
00033     in_stop ();
00034 
00035   public:
00036     virtual void
00037     send (Message_ptr m);
00038 
00039   private:
00040     virtual void
00041     send_ (Message_ptr m);
00042 
00043   private:
00044     void
00045     recv ();
00046 
00047     static ACE_THR_FUNC_RETURN
00048     recv_thunk (void* obj);
00049 
00050   private:
00051     virtual void
00052     recv (Message_ptr);
00053 
00054   private:
00055     Parameters const& params_;
00056 
00057     Address addr_, self_;
00058     ACE_SOCK_Dgram_Mcast rsock_;
00059     ACE_SOCK_Dgram ssock_;
00060 
00061     bool stop_;
00062     ACE_Thread_Manager recv_mgr_;
00063 
00064     // Simulator.
00065     //
00066     Message_ptr hold_;
00067 
00068     Mutex mutex_;
00069   };
00070 }
00071 
00072 
00073 #endif  // ACE_RMCAST_LINK_H

Generated on Thu Nov 9 11:40:40 2006 for ACE_RMCast by doxygen 1.3.6