Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

RMCast_UDP_Reliable_Sender.h

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 // $Id: RMCast_UDP_Reliable_Sender.h,v 1.1.1.1 2001/12/04 14:33:17 chad Exp $
00003 
00004 #ifndef ACE_RMCAST_UDP_RELIABLE_SENDER_H
00005 #define ACE_RMCAST_UDP_RELIABLE_SENDER_H
00006 #include "ace/pre.h"
00007 
00008 #include "RMCast_Singleton_Factory.h"
00009 #include "RMCast_IO_UDP.h"
00010 #include "RMCast_Sequencer.h"
00011 #include "RMCast_Retransmission.h"
00012 #include "RMCast_Membership.h"
00013 #include "RMCast_Fragment.h"
00014 #include "RMCast_Fork.h"
00015 
00016 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00017 # pragma once
00018 #endif /* ACE_LACKS_PRAGMA_ONCE */
00019 
00020 class ACE_Reactor;
00021 
00022 class ACE_RMCast_Export ACE_RMCast_UDP_Reliable_Sender : public ACE_RMCast_Module
00023 {
00024 public:
00025   /// Constructor
00026   ACE_RMCast_UDP_Reliable_Sender (ACE_RMCast_Module *user_control);
00027 
00028   /// Destructor
00029   virtual ~ACE_RMCast_UDP_Reliable_Sender (void);
00030 
00031   /// Open the UDP I/O module.
00032   int init (const ACE_INET_Addr &mcast_group);
00033 
00034   /// Use the reactor to handle incoming messages
00035   void reactive_incoming_messages (ACE_Reactor *reactor);
00036 
00037   /// Use the reactor to periodically resend messages
00038   void reactive_resends (ACE_Reactor *reactor,
00039                          const ACE_Time_Value &period);
00040 
00041   /// Check if there is still some messages to send, return 0 if not.
00042   int has_data (void);
00043 
00044   /// Check if there are any members still connected
00045   int has_members (void);
00046 
00047 private:
00048   /// The application-level control module
00049   ACE_RMCast_Module *user_control_;
00050 
00051   /// Assign sequence numbers
00052   ACE_RMCast_Sequencer sequencer_;
00053 
00054   /// The retransmission module
00055   ACE_RMCast_Retransmission retransmission_;
00056 
00057   /// All the proxys give their messages to the retransmission module
00058   ACE_RMCast_Singleton_Factory factory_;
00059 
00060   /// Handle all the UDP I/O
00061   ACE_RMCast_IO_UDP io_udp_;
00062 
00063   /// The membership module
00064   ACE_RMCast_Membership membership_;
00065 
00066   /// The fragmentation module
00067   ACE_RMCast_Fragment fragment_;
00068 
00069   /// Redirect control messages to the user supplied module
00070   ACE_RMCast_Fork fork_;
00071 };
00072 
00073 #if defined (__ACE_INLINE__)
00074 #include "RMCast_UDP_Reliable_Sender.i"
00075 #endif /* __ACE_INLINE__ */
00076 
00077 #include "ace/post.h"
00078 #endif /* ACE_RMCAST_UDP_RELIABLE_SENDER_H */

Generated on Mon Jun 16 13:12:38 2003 for ACE_RMCast by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002