diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-06-17 00:39:09 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2000-06-17 00:39:09 +0000 |
commit | 9858d5181a243af42a9a15048e0bf7db4928f94c (patch) | |
tree | 8c598bbe84a843f5eb9b5fd895ba1acafa128f47 /protocols/ace/RMCast/RMCast_Fragment.h | |
parent | 6107fcba7504cca59cc0b9d85286b73507e3897e (diff) | |
download | ATCD-9858d5181a243af42a9a15048e0bf7db4928f94c.tar.gz |
ChangeLogTag:Fri Jun 16 17:30:18 2000 Carlos O'Ryan <coryan@uci.edu>
Diffstat (limited to 'protocols/ace/RMCast/RMCast_Fragment.h')
-rw-r--r-- | protocols/ace/RMCast/RMCast_Fragment.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/protocols/ace/RMCast/RMCast_Fragment.h b/protocols/ace/RMCast/RMCast_Fragment.h new file mode 100644 index 00000000000..8aa7024770e --- /dev/null +++ b/protocols/ace/RMCast/RMCast_Fragment.h @@ -0,0 +1,68 @@ +// $Id$ + +// ============================================================================ +// +// = DESCRIPTION +// The fragmentation task for the reliable multicast library +// +// = AUTHOR +// Carlos O'Ryan <coryan@cs.wustl.edu> +// +// ============================================================================ + +#ifndef ACE_RMCAST_FRAGMENT_H +#define ACE_RMCAST_FRAGMENT_H +#include "ace/pre.h" + +#include "RMCast_Export.h" +#include "ace/Task.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#ifndef ACE_RMCAST_DEFAULT_FRAGMENT_SIZE +# define ACE_RMCAST_DEFAULT_FRAGMENT_SIZE 1024 +#endif /* ACE_RMCAST_DEFAULT_FRAGMENT_SIZE */ + +template <ACE_SYNCH_DECL> +class ACE_RMCast_Export ACE_RMCast_Fragment : public ACE_Task<ACE_SYNCH_USE> +{ +public: + ACE_RMCast_Fragment (ACE_Thread_Manager *thr_mgr = 0, + ACE_Message_Queue<ACE_SYNCH_USE> *mq = 0); + // Constructor + + virtual ~ACE_RMCast_Fragment (void); + // Destructor + + size_t max_fragment_size (void) const; + // Accessor for the max_fragment size. + // There is no modifier, the maximum fragment size is obtained using + // feedback from the lower layer (transport?) + + // = The ACE_Task methods + int put (ACE_Message_Block *, ACE_Time_Value *timeout = 0); + +private: + size_t max_fragment_size_; + + ACE_SYNCH_MUTEX_T mutex_; + ACE_UINT32 sequence_number_generator_; + // The sequence number generator +}; + +#if defined (__ACE_INLINE__) +#include "RMCast_Fragment.i" +#endif /* __ACE_INLINE__ */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "RMCast_Fragment.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("RMCast_Fragment.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include "ace/post.h" +#endif /* ACE_RMCAST_FRAGMENT_H */ |