From 3e58b5d4f274dda00df9ec21f268537131519ec9 Mon Sep 17 00:00:00 2001 From: coryan Date: Tue, 31 Jul 2001 20:00:01 +0000 Subject: ChangeLogTag:Tue Jul 31 12:55:07 2001 Carlos O'Ryan --- TAO/ChangeLogs/ChangeLog-02a | 38 +++++++++++++++++++++ TAO/tao/Follower.cpp | 36 -------------------- TAO/tao/Follower.h | 69 -------------------------------------- TAO/tao/Follower.inl | 13 ------- TAO/tao/Follower_Auto_Ptr.cpp | 15 --------- TAO/tao/Follower_Auto_Ptr.h | 59 -------------------------------- TAO/tao/Follower_Auto_Ptr.inl | 26 -------------- TAO/tao/LF_Event.cpp | 2 +- TAO/tao/LF_Event.h | 7 ++-- TAO/tao/LF_Event.inl | 2 +- TAO/tao/LF_Event_Binder.h | 8 ++--- TAO/tao/LF_Event_Binder.inl | 2 +- TAO/tao/LF_Follower.cpp | 46 +++++++++++++++++++++++++ TAO/tao/LF_Follower.h | 69 ++++++++++++++++++++++++++++++++++++++ TAO/tao/LF_Follower.inl | 13 +++++++ TAO/tao/LF_Follower_Auto_Adder.cpp | 2 +- TAO/tao/LF_Follower_Auto_Adder.h | 15 +++------ TAO/tao/LF_Follower_Auto_Adder.inl | 20 +---------- TAO/tao/LF_Follower_Auto_Ptr.cpp | 15 +++++++++ TAO/tao/LF_Follower_Auto_Ptr.h | 59 ++++++++++++++++++++++++++++++++ TAO/tao/LF_Follower_Auto_Ptr.inl | 26 ++++++++++++++ TAO/tao/Leader_Follower.cpp | 21 ++++++------ TAO/tao/Leader_Follower.h | 15 +++++---- TAO/tao/Leader_Follower.i | 4 +-- TAO/tao/Makefile | 8 +++-- TAO/tao/Makefile.am | 4 +-- TAO/tao/Makefile.bor | 4 +-- TAO/tao/TAO.dsp | 12 +++---- TAO/tao/TAO_Static.dsp | 24 +++++++++++++ 29 files changed, 342 insertions(+), 292 deletions(-) delete mode 100644 TAO/tao/Follower.cpp delete mode 100644 TAO/tao/Follower.h delete mode 100644 TAO/tao/Follower.inl delete mode 100644 TAO/tao/Follower_Auto_Ptr.cpp delete mode 100644 TAO/tao/Follower_Auto_Ptr.h delete mode 100644 TAO/tao/Follower_Auto_Ptr.inl create mode 100644 TAO/tao/LF_Follower.cpp create mode 100644 TAO/tao/LF_Follower.h create mode 100644 TAO/tao/LF_Follower.inl create mode 100644 TAO/tao/LF_Follower_Auto_Ptr.cpp create mode 100644 TAO/tao/LF_Follower_Auto_Ptr.h create mode 100644 TAO/tao/LF_Follower_Auto_Ptr.inl diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a index 2e99747a982..e099f1c49f0 100644 --- a/TAO/ChangeLogs/ChangeLog-02a +++ b/TAO/ChangeLogs/ChangeLog-02a @@ -1,3 +1,41 @@ +Tue Jul 31 12:55:07 2001 Carlos O'Ryan + + * tao/Follower.h: + * tao/Follower.inl: + * tao/Follower.cpp: + * tao/Follower_Auto_Ptr.h: + * tao/Follower_Auto_Ptr.inl: + * tao/Follower_Auto_Ptr.cpp: + * tao/LF_Follower.h: + * tao/LF_Follower.inl: + * tao/LF_Follower.cpp: + * tao/LF_Follower_Auto_Ptr.h: + * tao/LF_Follower_Auto_Ptr.inl: + * tao/LF_Follower_Auto_Ptr.cpp: + * tao/Makefile: + * tao/Makefile.am: + * tao/Makefile.bor: + * tao/TAO.dsp: + * tao/TAO_Static.dsp: + Renamed TAO_Follower to TAO_LF_Follower and + TAO_Follower_Auto_Ptr to TAO_LF_Follower_Auto_Ptr, I think this + is more consistent with the other files in the project. + + * tao/LF_Follower_Auto_Adder.h: + * tao/LF_Follower_Auto_Adder.inl: + * tao/LF_Follower_Auto_Adder.cpp: + Remove unused code from the Auto_Adder files. + + * tao/LF_Event.h: + * tao/LF_Event.inl: + * tao/LF_Event.cpp: + * tao/LF_Event_Binder.h: + * tao/LF_Event_Binder.inl: + * tao/Leader_Follower.h: + * tao/Leader_Follower.i: + * tao/Leader_Follower.cpp: + Use the new class names and #includes. + Mon Jul 30 14:41:43 2001 Carlos O'Ryan * tao/LF_Follower_Auto_Adder.h: diff --git a/TAO/tao/Follower.cpp b/TAO/tao/Follower.cpp deleted file mode 100644 index 917eabd0dca..00000000000 --- a/TAO/tao/Follower.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// -*- C++ -*- -// $Id$ - -#include "tao/Follower.h" -#include "tao/Leader_Follower.h" - -#if !defined (__ACE_INLINE__) -# include "tao/Follower.inl" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID(tao, Follower, "$Id$") - -TAO_Follower::TAO_Follower (TAO_Leader_Follower &leader_follower) - : leader_follower_ (leader_follower) - , condition_ (leader_follower.lock ()) -{ -} - -TAO_Follower::~TAO_Follower (void) -{ -} - -int -TAO_Follower::signal (void) -{ - // We *must* remove ourselves from the list of followers, otherwise - // we could get signalled twice: to wake up as a follower and as the - // next leader. - // The follower may not be there if the reply is received while - // the consumer is not yet waiting for it (i.e. it send the - // request but has not blocked to receive the reply yet). - // Ignore errors. - (void) this->leader_follower_.remove_follower (this); - - return this->condition_.signal (); -} diff --git a/TAO/tao/Follower.h b/TAO/tao/Follower.h deleted file mode 100644 index c701a8b6ce3..00000000000 --- a/TAO/tao/Follower.h +++ /dev/null @@ -1,69 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file Follower.h - * - * $Id$ - * - * @author Carlos O'Ryan - */ -//============================================================================= - -#ifndef TAO_FOLLOWER_H -#define TAO_FOLLOWER_H -#include "ace/pre.h" - -#include "tao/orbconf.h" -#include "tao/TAO_Export.h" -#include "ace/Synch.h" -#include "ace/Intrusive_List_Node.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -class TAO_Leader_Follower; - -/** - * @class TAO_Follower - * - * @brief Represent a thread blocked, as a follower, in the - * Leader/Followers set. - * - * @todo Currently this class offers little abstraction, the follower - * loop should be implemented by this class. - * - */ -class TAO_Export TAO_Follower : public ACE_Intrusive_List_Node -{ -public: - /// Constructor - TAO_Follower (TAO_Leader_Follower &leader_follower); - - /// Destructor - ~TAO_Follower (void); - - /// Access the leader follower that owns this follower - TAO_Leader_Follower &leader_follower (void); - - /// Wait until on the underlying condition variable - int wait (ACE_Time_Value *tv); - - /// Signal the underlying condition variable - int signal (void); - -private: - /// The Leader/Follower set this Follower belongs to - TAO_Leader_Follower &leader_follower_; - - /// Condition variable used to - ACE_SYNCH_CONDITION condition_; -}; - -#if defined (__ACE_INLINE__) -# include "tao/Follower.inl" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" -#endif /* TAO_FOLLOWER_H */ diff --git a/TAO/tao/Follower.inl b/TAO/tao/Follower.inl deleted file mode 100644 index c3073b74efe..00000000000 --- a/TAO/tao/Follower.inl +++ /dev/null @@ -1,13 +0,0 @@ -// $Id$ - -ACE_INLINE TAO_Leader_Follower & -TAO_Follower::leader_follower (void) -{ - return this->leader_follower_; -} - -ACE_INLINE int -TAO_Follower::wait (ACE_Time_Value *tv) -{ - return this->condition_.wait (tv); -} diff --git a/TAO/tao/Follower_Auto_Ptr.cpp b/TAO/tao/Follower_Auto_Ptr.cpp deleted file mode 100644 index 065120de479..00000000000 --- a/TAO/tao/Follower_Auto_Ptr.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// -*- C++ -*- -// $Id$ - -#include "tao/Follower_Auto_Ptr.h" - -#if !defined (__ACE_INLINE__) -# include "tao/Follower_Auto_Ptr.inl" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID(tao, Follower_Auto_Ptr, "$Id$") - -TAO_LF_Follower_Auto_Ptr::~TAO_LF_Follower_Auto_Ptr (void) -{ - this->leader_follower_.release_follower (this->follower_); -} diff --git a/TAO/tao/Follower_Auto_Ptr.h b/TAO/tao/Follower_Auto_Ptr.h deleted file mode 100644 index 6ed17e823d8..00000000000 --- a/TAO/tao/Follower_Auto_Ptr.h +++ /dev/null @@ -1,59 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file Follower_Auto_Ptr.h - * - * $Id$ - * - * @author Carlos O'Ryan - */ -//============================================================================= - -#ifndef TAO_FOLLOWER_AUTO_PTR_H -#define TAO_FOLLOWER_AUTO_PTR_H -#include "ace/pre.h" - -#include "tao/orbconf.h" -#include "tao/Leader_Follower.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -class TAO_Follower; - -/** - * @brief Implement an auto_ptr-like class for the TAO_Followers - * allocated via a TAO_Leader_Follower set. - * - * The Leader/Follower set is a factory for TAO_Follower objects - */ -class TAO_Export TAO_LF_Follower_Auto_Ptr -{ -public: - /// Constructor - TAO_LF_Follower_Auto_Ptr (TAO_Leader_Follower &); - - /// Destructor - ~TAO_LF_Follower_Auto_Ptr (void); - - /// Implement the smart pointer methods - TAO_Follower *get (void); - TAO_Follower *operator->(void); - operator TAO_Follower *(void); - -private: - /// Keep a reference to the leader follower - TAO_Leader_Follower &leader_follower_; - - /// The follower - TAO_Follower *follower_; -}; - -#if defined (__ACE_INLINE__) -# include "tao/Follower_Auto_Ptr.inl" -#endif /* __ACE_INLINE__ */ - -#include "ace/post.h" -#endif /* TAO_FOLLOWER_AUTO_PTR_H */ diff --git a/TAO/tao/Follower_Auto_Ptr.inl b/TAO/tao/Follower_Auto_Ptr.inl deleted file mode 100644 index d468cd9dea5..00000000000 --- a/TAO/tao/Follower_Auto_Ptr.inl +++ /dev/null @@ -1,26 +0,0 @@ -// $Id$ - -ACE_INLINE -TAO_LF_Follower_Auto_Ptr::TAO_LF_Follower_Auto_Ptr (TAO_Leader_Follower &lf) - : leader_follower_ (lf) - , follower_ (leader_follower_.allocate_follower ()) -{ -} - -ACE_INLINE TAO_Follower * -TAO_LF_Follower_Auto_Ptr::get (void) -{ - return this->follower_; -} - -ACE_INLINE TAO_Follower * -TAO_LF_Follower_Auto_Ptr::operator-> (void) -{ - return this->follower_; -} - -ACE_INLINE -TAO_LF_Follower_Auto_Ptr::operator TAO_Follower * (void) -{ - return this->follower_; -} diff --git a/TAO/tao/LF_Event.cpp b/TAO/tao/LF_Event.cpp index 4c9ef12d550..3b03c0b59ad 100644 --- a/TAO/tao/LF_Event.cpp +++ b/TAO/tao/LF_Event.cpp @@ -2,7 +2,7 @@ // $Id$ #include "tao/LF_Event.h" -#include "tao/Follower.h" +#include "tao/LF_Follower.h" #include "tao/Leader_Follower.h" #if !defined (__ACE_INLINE__) diff --git a/TAO/tao/LF_Event.h b/TAO/tao/LF_Event.h index 57d860205f1..a71dfa7bb89 100644 --- a/TAO/tao/LF_Event.h +++ b/TAO/tao/LF_Event.h @@ -21,8 +21,7 @@ #endif /* ACE_LACKS_PRAGMA_ONCE */ class TAO_Transport; -// @todo -class TAO_Follower; +class TAO_LF_Follower; /** * @class TAO_LF_Event @@ -60,7 +59,7 @@ public: * * @return -1 if the LF_Event is already bound, 0 otherwise */ - int bind (TAO_Follower *follower); + int bind (TAO_LF_Follower *follower); /// Unbind the follower int unbind (void); @@ -114,7 +113,7 @@ private: int state_; /// The bound follower thread - TAO_Follower *follower_; + TAO_LF_Follower *follower_; }; #if defined (__ACE_INLINE__) diff --git a/TAO/tao/LF_Event.inl b/TAO/tao/LF_Event.inl index 96e9e118918..67b7083ad36 100644 --- a/TAO/tao/LF_Event.inl +++ b/TAO/tao/LF_Event.inl @@ -1,7 +1,7 @@ // $Id$ ACE_INLINE int -TAO_LF_Event::bind (TAO_Follower *follower) +TAO_LF_Event::bind (TAO_LF_Follower *follower) { if (this->follower_ != 0) return -1; diff --git a/TAO/tao/LF_Event_Binder.h b/TAO/tao/LF_Event_Binder.h index cb011d13614..1cc7a32afa5 100644 --- a/TAO/tao/LF_Event_Binder.h +++ b/TAO/tao/LF_Event_Binder.h @@ -20,20 +20,20 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -class TAO_Follower; +class TAO_LF_Follower; /** - * @brief Implement an auto_ptr-like class for the TAO_Followers + * @brief Implement an auto_ptr-like class for the TAO_LF_Followers * allocated via a TAO_Leader_Follower set. * - * The Leader/Follower set is a factory for TAO_Follower objects + * The Leader/Follower set is a factory for TAO_LF_Follower objects */ class TAO_Export TAO_LF_Event_Binder { public: /// Constructor TAO_LF_Event_Binder (TAO_LF_Event *event, - TAO_Follower *folloer); + TAO_LF_Follower *folloer); /// Destructor ~TAO_LF_Event_Binder (void); diff --git a/TAO/tao/LF_Event_Binder.inl b/TAO/tao/LF_Event_Binder.inl index d861a1f2789..e674cb6e08b 100644 --- a/TAO/tao/LF_Event_Binder.inl +++ b/TAO/tao/LF_Event_Binder.inl @@ -2,7 +2,7 @@ ACE_INLINE TAO_LF_Event_Binder::TAO_LF_Event_Binder (TAO_LF_Event *event, - TAO_Follower *follower) + TAO_LF_Follower *follower) : event_ (event) { this->event_->bind (follower); diff --git a/TAO/tao/LF_Follower.cpp b/TAO/tao/LF_Follower.cpp new file mode 100644 index 00000000000..ef5114a42a8 --- /dev/null +++ b/TAO/tao/LF_Follower.cpp @@ -0,0 +1,46 @@ +// -*- C++ -*- +// $Id$ + +#include "tao/LF_Follower.h" +#include "tao/Leader_Follower.h" + +#if !defined (__ACE_INLINE__) +# include "tao/LF_Follower.inl" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(tao, LF_Follower, "$Id$") + +TAO_LF_Follower::TAO_LF_Follower (TAO_Leader_Follower &leader_follower) + : leader_follower_ (leader_follower) + , condition_ (leader_follower.lock ()) +{ +} + +TAO_LF_Follower::~TAO_LF_Follower (void) +{ +} + +int +TAO_LF_Follower::signal (void) +{ + // We *must* remove ourselves from the list of followers, otherwise + // we could get signalled twice: to wake up as a follower and as the + // next leader. + // The follower may not be there if the reply is received while + // the consumer is not yet waiting for it (i.e. it send the + // request but has not blocked to receive the reply yet). + // Ignore errors. + (void) this->leader_follower_.remove_follower (this); + + return this->condition_.signal (); +} + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + +template class ACE_Intrusive_List_Node; + +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) + +#pragma instantiate ACE_Intrusive_List_Node + +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/LF_Follower.h b/TAO/tao/LF_Follower.h new file mode 100644 index 00000000000..2f7092c1278 --- /dev/null +++ b/TAO/tao/LF_Follower.h @@ -0,0 +1,69 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file LF_Follower.h + * + * $Id$ + * + * @author Carlos O'Ryan + */ +//============================================================================= + +#ifndef TAO_LF_FOLLOWER_H +#define TAO_LF_FOLLOWER_H +#include "ace/pre.h" + +#include "tao/orbconf.h" +#include "tao/TAO_Export.h" +#include "ace/Synch.h" +#include "ace/Intrusive_List_Node.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_Leader_Follower; + +/** + * @class TAO_LF_Follower + * + * @brief Represent a thread blocked, as a follower, in the + * Leader/Followers set. + * + * @todo Currently this class offers little abstraction, the follower + * loop should be implemented by this class. + * + */ +class TAO_Export TAO_LF_Follower : public ACE_Intrusive_List_Node +{ +public: + /// Constructor + TAO_LF_Follower (TAO_Leader_Follower &leader_follower); + + /// Destructor + ~TAO_LF_Follower (void); + + /// Access the leader follower that owns this follower + TAO_Leader_Follower &leader_follower (void); + + /// Wait until on the underlying condition variable + int wait (ACE_Time_Value *tv); + + /// Signal the underlying condition variable + int signal (void); + +private: + /// The Leader/Follower set this Follower belongs to + TAO_Leader_Follower &leader_follower_; + + /// Condition variable used to + ACE_SYNCH_CONDITION condition_; +}; + +#if defined (__ACE_INLINE__) +# include "tao/LF_Follower.inl" +#endif /* __ACE_INLINE__ */ + +#include "ace/post.h" +#endif /* TAO_LF_FOLLOWER_H */ diff --git a/TAO/tao/LF_Follower.inl b/TAO/tao/LF_Follower.inl new file mode 100644 index 00000000000..b7e612b94ee --- /dev/null +++ b/TAO/tao/LF_Follower.inl @@ -0,0 +1,13 @@ +// $Id$ + +ACE_INLINE TAO_Leader_Follower & +TAO_LF_Follower::leader_follower (void) +{ + return this->leader_follower_; +} + +ACE_INLINE int +TAO_LF_Follower::wait (ACE_Time_Value *tv) +{ + return this->condition_.wait (tv); +} diff --git a/TAO/tao/LF_Follower_Auto_Adder.cpp b/TAO/tao/LF_Follower_Auto_Adder.cpp index 906ae29132e..353005b1dc8 100644 --- a/TAO/tao/LF_Follower_Auto_Adder.cpp +++ b/TAO/tao/LF_Follower_Auto_Adder.cpp @@ -7,7 +7,7 @@ # include "tao/LF_Follower_Auto_Adder.inl" #endif /* __ACE_INLINE__ */ -ACE_RCSID(tao, Follower_Auto_Adder, "$Id$") +ACE_RCSID(tao, LF_Follower_Auto_Adder, "$Id$") TAO_LF_Follower_Auto_Adder::~TAO_LF_Follower_Auto_Adder (void) { diff --git a/TAO/tao/LF_Follower_Auto_Adder.h b/TAO/tao/LF_Follower_Auto_Adder.h index 9e336614bd0..0a6bf3f6642 100644 --- a/TAO/tao/LF_Follower_Auto_Adder.h +++ b/TAO/tao/LF_Follower_Auto_Adder.h @@ -21,35 +21,30 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -class TAO_Follower; +class TAO_LF_Follower; /** - * @brief Implement an auto_adder-like class for the TAO_Followers + * @brief Implement an auto_adder-like class for the TAO_LF_Followers * allocated via a TAO_Leader_Follower set. * - * The Leader/Follower set is a factory for TAO_Follower objects + * The Leader/Follower set is a factory for TAO_LF_Follower objects */ class TAO_Export TAO_LF_Follower_Auto_Adder { public: /// Constructor TAO_LF_Follower_Auto_Adder (TAO_Leader_Follower &, - TAO_Follower *follower); + TAO_LF_Follower *follower); /// Destructor ~TAO_LF_Follower_Auto_Adder (void); - /// Implement the smart pointer methods - TAO_Follower *get (void); - TAO_Follower *operator->(void); - operator TAO_Follower *(void); - private: /// Keep a reference to the leader follower TAO_Leader_Follower &leader_follower_; /// The follower - TAO_Follower *follower_; + TAO_LF_Follower *follower_; }; #if defined (__ACE_INLINE__) diff --git a/TAO/tao/LF_Follower_Auto_Adder.inl b/TAO/tao/LF_Follower_Auto_Adder.inl index 900b10f9658..62817754d77 100644 --- a/TAO/tao/LF_Follower_Auto_Adder.inl +++ b/TAO/tao/LF_Follower_Auto_Adder.inl @@ -3,27 +3,9 @@ ACE_INLINE TAO_LF_Follower_Auto_Adder:: TAO_LF_Follower_Auto_Adder (TAO_Leader_Follower &lf, - TAO_Follower *follower) + TAO_LF_Follower *follower) : leader_follower_ (lf) , follower_ (follower) { (void) this->leader_follower_.add_follower (this->follower_); } - -ACE_INLINE TAO_Follower * -TAO_LF_Follower_Auto_Adder::get (void) -{ - return this->follower_; -} - -ACE_INLINE TAO_Follower * -TAO_LF_Follower_Auto_Adder::operator-> (void) -{ - return this->follower_; -} - -ACE_INLINE -TAO_LF_Follower_Auto_Adder::operator TAO_Follower * (void) -{ - return this->follower_; -} diff --git a/TAO/tao/LF_Follower_Auto_Ptr.cpp b/TAO/tao/LF_Follower_Auto_Ptr.cpp new file mode 100644 index 00000000000..acb28b3e34e --- /dev/null +++ b/TAO/tao/LF_Follower_Auto_Ptr.cpp @@ -0,0 +1,15 @@ +// -*- C++ -*- +// $Id$ + +#include "tao/LF_Follower_Auto_Ptr.h" + +#if !defined (__ACE_INLINE__) +# include "tao/LF_Follower_Auto_Ptr.inl" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(tao, LF_Follower_Auto_Ptr, "$Id$") + +TAO_LF_Follower_Auto_Ptr::~TAO_LF_Follower_Auto_Ptr (void) +{ + this->leader_follower_.release_follower (this->follower_); +} diff --git a/TAO/tao/LF_Follower_Auto_Ptr.h b/TAO/tao/LF_Follower_Auto_Ptr.h new file mode 100644 index 00000000000..d76fceab0fd --- /dev/null +++ b/TAO/tao/LF_Follower_Auto_Ptr.h @@ -0,0 +1,59 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file LF_Follower_Auto_Ptr.h + * + * $Id$ + * + * @author Carlos O'Ryan + */ +//============================================================================= + +#ifndef TAO_LF_FOLLOWER_AUTO_PTR_H +#define TAO_LF_FOLLOWER_AUTO_PTR_H +#include "ace/pre.h" + +#include "tao/orbconf.h" +#include "tao/Leader_Follower.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_LF_Follower; + +/** + * @brief Implement an auto_ptr-like class for the TAO_LF_Followers + * allocated via a TAO_Leader_Follower set. + * + * The Leader/Follower set is a factory for TAO_LF_Follower objects + */ +class TAO_Export TAO_LF_Follower_Auto_Ptr +{ +public: + /// Constructor + TAO_LF_Follower_Auto_Ptr (TAO_Leader_Follower &); + + /// Destructor + ~TAO_LF_Follower_Auto_Ptr (void); + + /// Implement the smart pointer methods + TAO_LF_Follower *get (void); + TAO_LF_Follower *operator->(void); + operator TAO_LF_Follower *(void); + +private: + /// Keep a reference to the leader follower + TAO_Leader_Follower &leader_follower_; + + /// The follower + TAO_LF_Follower *follower_; +}; + +#if defined (__ACE_INLINE__) +# include "tao/LF_Follower_Auto_Ptr.inl" +#endif /* __ACE_INLINE__ */ + +#include "ace/post.h" +#endif /* TAO_LF_FOLLOWER_AUTO_PTR_H */ diff --git a/TAO/tao/LF_Follower_Auto_Ptr.inl b/TAO/tao/LF_Follower_Auto_Ptr.inl new file mode 100644 index 00000000000..43deadfca37 --- /dev/null +++ b/TAO/tao/LF_Follower_Auto_Ptr.inl @@ -0,0 +1,26 @@ +// $Id$ + +ACE_INLINE +TAO_LF_Follower_Auto_Ptr::TAO_LF_Follower_Auto_Ptr (TAO_Leader_Follower &lf) + : leader_follower_ (lf) + , follower_ (leader_follower_.allocate_follower ()) +{ +} + +ACE_INLINE TAO_LF_Follower * +TAO_LF_Follower_Auto_Ptr::get (void) +{ + return this->follower_; +} + +ACE_INLINE TAO_LF_Follower * +TAO_LF_Follower_Auto_Ptr::operator-> (void) +{ + return this->follower_; +} + +ACE_INLINE +TAO_LF_Follower_Auto_Ptr::operator TAO_LF_Follower * (void) +{ + return this->follower_; +} diff --git a/TAO/tao/Leader_Follower.cpp b/TAO/tao/Leader_Follower.cpp index 07f203abf15..c94e471e05d 100644 --- a/TAO/tao/Leader_Follower.cpp +++ b/TAO/tao/Leader_Follower.cpp @@ -2,8 +2,8 @@ #include "tao/Leader_Follower.h" #include "tao/Resource_Factory.h" -#include "tao/Follower.h" -#include "tao/Follower_Auto_Ptr.h" +#include "tao/LF_Follower.h" +#include "tao/LF_Follower_Auto_Ptr.h" #include "tao/LF_Follower_Auto_Adder.h" #include "tao/LF_Event.h" #include "tao/LF_Event_Binder.h" @@ -22,7 +22,8 @@ TAO_Leader_Follower::~TAO_Leader_Follower (void) { while (!this->follower_free_list_.empty ()) { - TAO_Follower *follower = this->follower_free_list_.pop_front (); + TAO_LF_Follower *follower = + this->follower_free_list_.pop_front (); delete follower; } // Hand the reactor back to the resource factory. @@ -30,17 +31,17 @@ TAO_Leader_Follower::~TAO_Leader_Follower (void) this->reactor_ = 0; } -TAO_Follower * +TAO_LF_Follower * TAO_Leader_Follower::allocate_follower (void) { if (!this->follower_free_list_.empty ()) return this->follower_free_list_.pop_front (); - return new TAO_Follower (*this); + return new TAO_LF_Follower (*this); } void -TAO_Leader_Follower::release_follower (TAO_Follower *follower) +TAO_Leader_Follower::release_follower (TAO_LF_Follower *follower) { this->follower_free_list_.push_front (follower); } @@ -48,7 +49,7 @@ TAO_Leader_Follower::release_follower (TAO_Follower *follower) int TAO_Leader_Follower::elect_new_leader_i (void) { - TAO_Follower* follower = + TAO_LF_Follower* follower = this->follower_set_.head (); #if defined (TAO_DEBUG_LEADER_FOLLOWER) @@ -441,12 +442,10 @@ TAO_Leader_Follower::wait_for_event (TAO_LF_Event *event, #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Intrusive_List; -template class ACE_Intrusive_List_Node; +template class ACE_Intrusive_List; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Intrusive_List -#pragma instantiate ACE_Intrusive_List_Node +#pragma instantiate ACE_Intrusive_List #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/Leader_Follower.h b/TAO/tao/Leader_Follower.h index 6ac7f000a1b..2ff165ca020 100644 --- a/TAO/tao/Leader_Follower.h +++ b/TAO/tao/Leader_Follower.h @@ -13,7 +13,7 @@ #define TAO_LEADER_FOLLOWER_H #include "ace/pre.h" -#include "tao/Follower.h" +#include "tao/LF_Follower.h" #include "tao/ORB_Core.h" #include "ace/Intrusive_List.h" @@ -62,7 +62,8 @@ public: * @param max_wait_time Limit the time spent on the loop * * @todo Document this better, split the Follower code to the - * TAO_Follower class, we probably don't need the transport object. + * TAO_LF_Follower class, we probably don't need the transport + * object. */ int wait_for_event (TAO_LF_Event *event, TAO_Transport *transport, @@ -112,10 +113,10 @@ public: */ //@{ /// Allocate a new follower to the caller. - TAO_Follower *allocate_follower (void); + TAO_LF_Follower *allocate_follower (void); /// The caller has finished using a follower. - void release_follower (TAO_Follower *); + void release_follower (TAO_LF_Follower *); //@} /** @name Follower Set Operations @@ -123,10 +124,10 @@ public: */ //@{ /// Add a new follower to the set - void add_follower (TAO_Follower *follower); + void add_follower (TAO_LF_Follower *follower); /// Removes a follower from the leader-follower set - void remove_follower (TAO_Follower *follower); + void remove_follower (TAO_LF_Follower *follower); /// Checks if there are any followers available /** @@ -194,7 +195,7 @@ private: ACE_Reverse_Lock reverse_lock_; /// Implement the Leader/Followers set using an intrusive list - typedef ACE_Intrusive_List Follower_Set; + typedef ACE_Intrusive_List Follower_Set; Follower_Set follower_set_; /// Use a free list to allocate and release Follower objects diff --git a/TAO/tao/Leader_Follower.i b/TAO/tao/Leader_Follower.i index 3b05ae97cd5..6bddae3f4be 100644 --- a/TAO/tao/Leader_Follower.i +++ b/TAO/tao/Leader_Follower.i @@ -154,13 +154,13 @@ TAO_Leader_Follower::is_client_leader_thread (void) const } ACE_INLINE void -TAO_Leader_Follower::add_follower (TAO_Follower *follower) +TAO_Leader_Follower::add_follower (TAO_LF_Follower *follower) { this->follower_set_.push_back (follower); } ACE_INLINE void -TAO_Leader_Follower::remove_follower (TAO_Follower *follower) +TAO_Leader_Follower::remove_follower (TAO_LF_Follower *follower) { this->follower_set_.remove (follower); } diff --git a/TAO/tao/Makefile b/TAO/tao/Makefile index 7d898dbb2d6..e44caa86033 100644 --- a/TAO/tao/Makefile +++ b/TAO/tao/Makefile @@ -47,7 +47,9 @@ PUB_HDRS = \ Client_Strategy_Factory \ ORB_Core \ ORB_Table \ - Follower \ + LF_Follower \ + LF_Follower_Auto_Adder \ + LF_Follower_Auto_Ptr \ LF_Event \ LF_Event_Binder \ LF_Event_Loop_Thread_Helper \ @@ -192,8 +194,8 @@ ORB_CORE_FILES = \ ORB_Core \ Stub_Factory \ ORB_Table \ - Follower \ - Follower_Auto_Ptr \ + LF_Follower \ + LF_Follower_Auto_Ptr \ LF_Follower_Auto_Adder \ Leader_Follower \ Leader_Follower_Flushing_Strategy \ diff --git a/TAO/tao/Makefile.am b/TAO/tao/Makefile.am index a67181a8aaf..dc550a9b8bb 100644 --- a/TAO/tao/Makefile.am +++ b/TAO/tao/Makefile.am @@ -138,8 +138,8 @@ ORB_CORE_FILES = \ LF_Strategy_Complete.cpp \ Leader_Follower.cpp \ Leader_Follower_Flushing_Strategy.cpp \ - Follower.cpp \ - Follower_Auto_Ptr.cpp \ + LF_Follower.cpp \ + LF_Follower_Auto_Ptr.cpp \ LF_Follower_Auto_Adder.cpp \ Reactor_Registry.cpp \ Single_Reactor.cpp \ diff --git a/TAO/tao/Makefile.bor b/TAO/tao/Makefile.bor index cec043c18a3..d68e0c84fea 100644 --- a/TAO/tao/Makefile.bor +++ b/TAO/tao/Makefile.bor @@ -77,8 +77,8 @@ OBJFILES = \ $(OBJDIR)\Fault_Tolerance_Service.obj \ $(OBJDIR)\FILE_Parser.obj \ $(OBJDIR)\Flushing_Strategy.obj \ - $(OBJDIR)\Follower.obj \ - $(OBJDIR)\Follower_Auto_Ptr.obj \ + $(OBJDIR)\LF_Follower.obj \ + $(OBJDIR)\LF_Follower_Auto_Ptr.obj \ $(OBJDIR)\LF_Follower_Auto_Adder.obj \ $(OBJDIR)\GIOP_Message_Base.obj \ $(OBJDIR)\GIOP_Message_Lite.obj \ diff --git a/TAO/tao/TAO.dsp b/TAO/tao/TAO.dsp index 80a532dbd82..ae63a446401 100644 --- a/TAO/tao/TAO.dsp +++ b/TAO/tao/TAO.dsp @@ -387,11 +387,11 @@ SOURCE=.\Flushing_Strategy.cpp # End Source File # Begin Source File -SOURCE=.\Follower.cpp +SOURCE=.\LF_Follower.cpp # End Source File # Begin Source File -SOURCE=.\Follower_Auto_Ptr.cpp +SOURCE=.\LF_Follower_Auto_Ptr.cpp # End Source File # Begin Source File @@ -1147,19 +1147,19 @@ SOURCE=.\Flushing_Strategy.h # End Source File # Begin Source File -SOURCE=.\Follower.h +SOURCE=.\LF_Follower.h # End Source File # Begin Source File -SOURCE=.\Follower.inl +SOURCE=.\LF_Follower.inl # End Source File # Begin Source File -SOURCE=.\Follower_Auto_Ptr.h +SOURCE=.\LF_Follower_Auto_Ptr.h # End Source File # Begin Source File -SOURCE=.\Follower_Auto_Ptr.inl +SOURCE=.\LF_Follower_Auto_Ptr.inl # End Source File # Begin Source File diff --git a/TAO/tao/TAO_Static.dsp b/TAO/tao/TAO_Static.dsp index e2d6fa7a90f..e01c7d53320 100644 --- a/TAO/tao/TAO_Static.dsp +++ b/TAO/tao/TAO_Static.dsp @@ -475,10 +475,18 @@ SOURCE=.\LF_Event_Loop_Thread_Helper.h # End Source File # Begin Source File +SOURCE=.\LF_Follower.h +# End Source File +# Begin Source File + SOURCE=.\LF_Follower_Auto_Adder.h # End Source File # Begin Source File +SOURCE=.\LF_Follower_Auto_Ptr.h +# End Source File +# Begin Source File + SOURCE=.\LF_Strategy.h # End Source File # Begin Source File @@ -1183,10 +1191,18 @@ SOURCE=.\LF_Event_Loop_Thread_Helper.inl # End Source File # Begin Source File +SOURCE=.\LF_Follower.inl +# End Source File +# Begin Source File + SOURCE=.\LF_Follower_Auto_Adder.inl # End Source File # Begin Source File +SOURCE=.\LF_Follower_Auto_Ptr.inl +# End Source File +# Begin Source File + SOURCE=.\LF_Strategy.inl # End Source File # Begin Source File @@ -1843,10 +1859,18 @@ SOURCE=.\LF_Event_Loop_Thread_Helper.cpp # End Source File # Begin Source File +SOURCE=.\LF_Follower.cpp +# End Source File +# Begin Source File + SOURCE=.\LF_Follower_Auto_Adder.cpp # End Source File # Begin Source File +SOURCE=.\LF_Follower_Auto_Ptr.cpp +# End Source File +# Begin Source File + SOURCE=.\LF_Strategy.cpp # End Source File # Begin Source File -- cgit v1.2.1