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

RMCast_Module_Factory.h

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 // $Id: RMCast_Module_Factory.h,v 1.1.1.1 2001/12/04 14:33:17 chad Exp $
00003 
00004 // ============================================================================
00005 //
00006 // = LIBRARY
00007 //    ace
00008 //
00009 // = FILENAME
00010 //    RMCast_Module_Factory.h
00011 //
00012 // = AUTHOR
00013 //    Carlos O'Ryan <coryan@uci.edu>
00014 //
00015 // ============================================================================
00016 
00017 #ifndef ACE_RMCAST_MODULE_FACTORY_H
00018 #define ACE_RMCAST_MODULE_FACTORY_H
00019 #include "ace/pre.h"
00020 
00021 #include "RMCast.h"
00022 
00023 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00024 # pragma once
00025 #endif /* ACE_LACKS_PRAGMA_ONCE */
00026 
00027 class ACE_RMCast_Module;
00028 class ACE_RMCast_IO_UDP;
00029 
00030 //! Create Module stacks
00031 /*!
00032  * Different application will probably require different
00033  * configurations in their Module stack, some will just want best
00034  * effort semantics.  Others will use Reliable communication with a
00035  * maximum retransmission time.  Furthermore, applications may want to
00036  * receive messages in send order, or just as soon as they are
00037  * received.
00038  * Obviously most applications will want to change want happens once a
00039  * message is completely received.
00040  *
00041  * To achieve all this flexibility the IO layer uses this factory to
00042  * create the full stack of Modules corresponding to a single
00043  * consumer.
00044  * To keep the complexity under control the intention is to create
00045  * helper Factories, such as Reliable_Module_Factory where
00046  * applications only need to customize a few features.
00047  */
00048 class ACE_RMCast_Export ACE_RMCast_Module_Factory
00049 {
00050 public:
00051   //! Destructor
00052   virtual ~ACE_RMCast_Module_Factory (void);
00053 
00054   //! Create a new proxy
00055   virtual ACE_RMCast_Module *create (void) = 0;
00056 
00057   //! Destroy a proxy
00058   /*!
00059    * Some factories may allocate modules from a pool, or return the
00060    * same module for all proxies.  Consequently, only the factory
00061    * knows how to destroy them.
00062    */
00063   virtual void destroy (ACE_RMCast_Module *) = 0;
00064 };
00065 
00066 #if defined (__ACE_INLINE__)
00067 #include "RMCast_Module_Factory.i"
00068 #endif /* __ACE_INLINE__ */
00069 
00070 #include "ace/post.h"
00071 #endif /* ACE_RMCAST_MODULE_FACTORY_H */

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