Defines a helper class for the Caching Strategies. More...
#include <Caching_Utility_T.h>
Public Types | |
typedef ACE_Handler_Cleanup_Strategy < KEY, VALUE, CONTAINER > | CLEANUP_STRATEGY |
typedef ACE_Cleanup_Strategy < KEY, VALUE, CONTAINER > | CLEANUP_STRATEGY_BASE |
Public Member Functions | |
ACE_Handler_Caching_Utility (ACE_Cleanup_Strategy< KEY, VALUE, CONTAINER > *cleanup_strategy=0, int delete_cleanup_strategy=0) | |
Constructor. | |
~ACE_Handler_Caching_Utility (void) | |
Destructor. | |
int | clear_cache (CONTAINER &container, double purge_percent) |
Protected Member Functions | |
void | minimum (CONTAINER &container, KEY *&key_to_remove, VALUE *&value_to_remove) |
Protected Attributes | |
CLEANUP_STRATEGY_BASE * | cleanup_strategy_ |
int | delete_cleanup_strategy_ |
Whether the cleanup_strategy should be destroyed or not. | |
Private Member Functions | |
void | operator= (const ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES > &) |
ACE_Handler_Caching_Utility (const ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES > &) |
Defines a helper class for the Caching Strategies.
This class defines the methods commonly used by the different caching strategies. For instance: <clear_cache> method which decides and purges the entry from the container.
Definition at line 228 of file Caching_Utility_T.h.
typedef ACE_Handler_Cleanup_Strategy<KEY, VALUE, CONTAINER> ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::CLEANUP_STRATEGY |
Definition at line 232 of file Caching_Utility_T.h.
typedef ACE_Cleanup_Strategy<KEY, VALUE, CONTAINER> ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::CLEANUP_STRATEGY_BASE |
Definition at line 233 of file Caching_Utility_T.h.
ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::ACE_Handler_Caching_Utility | ( | ACE_Cleanup_Strategy< KEY, VALUE, CONTAINER > * | cleanup_strategy = 0 , |
|
int | delete_cleanup_strategy = 0 | |||
) |
Constructor.
Definition at line 364 of file Caching_Utility_T.cpp.
: cleanup_strategy_ (cleanup_strategy), delete_cleanup_strategy_ (delete_cleanup_strategy) { if (cleanup_strategy == 0) { ACE_NEW (this->cleanup_strategy_, CLEANUP_STRATEGY); this->delete_cleanup_strategy_ = 1; } }
ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::~ACE_Handler_Caching_Utility | ( | void | ) |
Destructor.
Definition at line 378 of file Caching_Utility_T.cpp.
{ if (this->delete_cleanup_strategy_) delete this->cleanup_strategy_; }
ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::ACE_Handler_Caching_Utility | ( | const ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES > & | ) | [private] |
int ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::clear_cache | ( | CONTAINER & | container, | |
double | purge_percent | |||
) |
Purge entries from the <container>. The Cleanup_Strategy will do the actual job of cleanup once the entries to be cleaned up are decided.
Definition at line 385 of file Caching_Utility_T.cpp.
{ // Check that the purge_percent is non-zero. if (purge_percent == 0) return 0; // Get the number of entries in the container. size_t current_map_size = container.current_size (); // Also whether the number of entries in the cache is just one! // Oops! then there is no way out but exiting. So return an error. if (current_map_size == 0) return 0; // Calculate the no of entries to remove from the cache depending // upon the <purge_percent>. size_t entries_to_remove = ACE_MAX (static_cast<size_t> (1), static_cast<size_t> (static_cast<double> (purge_percent) / 100 * current_map_size)); KEY *key_to_remove = 0; VALUE *value_to_remove = 0; for (size_t i = 0; i < entries_to_remove ; ++i) { this->minimum (container, key_to_remove, value_to_remove); if (this->cleanup_strategy_->cleanup (container, key_to_remove, value_to_remove) == -1) return -1; } return 0; }
void ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::minimum | ( | CONTAINER & | container, | |
KEY *& | key_to_remove, | |||
VALUE *& | value_to_remove | |||
) | [protected] |
Find the entry with minimum caching attributes. This is handler specific since this utility is to be used very specifically for handler who have caching_attributes for server side acched connection management.
Definition at line 426 of file Caching_Utility_T.cpp.
{ // Starting values. ITERATOR iter = container.begin (); ITERATOR end = container.end (); ATTRIBUTES min = (*iter).int_id_->caching_attributes (); key_to_remove = &(*iter).ext_id_; value_to_remove = &(*iter).int_id_; // The iterator moves thru the container searching for the entry // with the lowest ATTRIBUTES. for (++iter; iter != end; ++iter) { if (min > (*iter).int_id_->caching_attributes () && (*iter).int_id_->active () != 1) { // Ah! an item with lower ATTTRIBUTES... min = (*iter).int_id_->caching_attributes (); key_to_remove = &(*iter).ext_id_; value_to_remove = &(*iter).int_id_; } } }
void ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::operator= | ( | const ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES > & | ) | [private] |
CLEANUP_STRATEGY_BASE* ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::cleanup_strategy_ [protected] |
The cleanup strategy which can be used to destroy the entries of the container.
Definition at line 264 of file Caching_Utility_T.h.
int ACE_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::delete_cleanup_strategy_ [protected] |
Whether the cleanup_strategy should be destroyed or not.
Definition at line 267 of file Caching_Utility_T.h.