From b83706ff81a45c3717d39a99f4510d942818467f Mon Sep 17 00:00:00 2001 From: kirthika Date: Thu, 3 Jun 1999 22:23:07 +0000 Subject: strategy for destruction and cleanupo. --- ace/Cleanup_Strategies_T.h | 127 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 ace/Cleanup_Strategies_T.h (limited to 'ace/Cleanup_Strategies_T.h') diff --git a/ace/Cleanup_Strategies_T.h b/ace/Cleanup_Strategies_T.h new file mode 100644 index 00000000000..4cdeec27b24 --- /dev/null +++ b/ace/Cleanup_Strategies_T.h @@ -0,0 +1,127 @@ +/* -*- C++ -*- */ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// ace +// +// = FILENAME +// Cleanup_Strategies_T.h +// +// = AUTHOR +// Kirthika Parameswaran +// +// ============================================================================ + +#ifndef CLEANUP_STRATEGIES_H +#define CLEANUP_STRATEGIES_H + +#include "ace/OS.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +#define ACE_LACKS_PRAGMA_ONCE +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +template +class ACE_Cleanup_Strategy +{ + // = TITLE + // Defines a abstract base class which takes care of winding up + // and destroying the entries in the container. + // + // = DESCRIPTION + // This class is one of the ways to ensure that the cleanup + // can be decoupled from other strategies which need to do it. + // The cleanup method provided needs to be implemented as needed. + + public: + + // Traits. + typedef ACE_TYPENAME CONTAINER::KEY KEY; + typedef ACE_TYPENAME CONTAINER::VALUE VALUE; + + // = Termination. + + virtual ~ACE_Cleanup_Strategy (void); + + // = The cleanup operation. + + virtual int cleanup (CONTAINER &container, KEY *key, VALUE *value) = 0; + // This pure virtual method is to be used to destroy the entry. + +}; + +////////////////////////////////////////////////////////////////////////// + +template +class ACE_Default_Cleanup_Strategy : public ACE_Cleanup_Strategy +{ + // = TITLE + // Defines a default strategy to be followed for cleaning up + // entries from a map which is the container. + // + // = DESCRIPTION + // By defualt the entry to be cleaned up is removed from the + // container. + +public: + + virtual int cleanup (CONTAINER &container, KEY *key, VALUE *value); + // The method which will do the cleanup of the entry in the container. + +}; + +////////////////////////////////////////////////////////////////////// +template +class ACE_Svc_Cleanup_Strategy : public ACE_Cleanup_Strategy +{ + // = TITLE + // Defines a strategy to be followed for cleaning up + // entries which are svc_handlers from a container. + // + // = DESCRIPTION + // The entry to be cleaned up is removed from the container. + // Here, since we are dealing with svc_handlers specifically, we + // perform a couple of extra operations. + +public: + + virtual int cleanup (CONTAINER &container, KEY *key, VALUE *value); + // The method which will do the cleanup of the entry in the container. + +}; + +////////////////////////////////////////////////////////////////////// + +template +class ACE_Null_Cleanup_Strategy : public ACE_Cleanup_Strategy +{ + // = TITLE + // Defines a do-nothing implementation of the cleanup strategy. + // + // = DESCRIPTION + // This class simply does nothing at all! Can be used to nullify + // the effect of the Cleanup Strategy. + +public: + + virtual int cleanup (CONTAINER &container, KEY *key, VALUE *value); + // the dummy cleanup method. + +}; + +#if defined (__ACE_INLINE__) +#include "ace/Cleanup_Strategies_T.i" +#endif /* __ACE_INLINE__ */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "ace/Cleanup_Strategies_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation "ace/Cleanup_Strategies_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#endif /* CLEANUP_STRATEGIES_H */ -- cgit v1.2.1