Defines a helper class for the Caching Strategies. More...
#include <Caching_Utility_T.h>

Public Types | |
| typedef ACE_Recyclable_Handler_Cleanup_Strategy < KEY, VALUE, CONTAINER > | CLEANUP_STRATEGY |
| typedef ACE_Cleanup_Strategy < KEY, VALUE, CONTAINER > | CLEANUP_STRATEGY_BASE |
Public Member Functions | |
| ACE_Recyclable_Handler_Caching_Utility (ACE_Cleanup_Strategy< KEY, VALUE, CONTAINER > *cleanup_strategy=0, int delete_cleanup_strategy=0) | |
| Constructor. | |
| ~ACE_Recyclable_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) |
| Find the entry with minimum caching attributes. | |
Protected Attributes | |
| CLEANUP_STRATEGY_BASE * | cleanup_strategy_ |
| This is the default Cleanup Strategy for this utility. | |
| int | delete_cleanup_strategy_ |
| Whether the cleanup_strategy should be destroyed or not. | |
Private Member Functions | |
| void | operator= (const ARHUTIL< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES > &) |
| ARHUTIL (const ARHUTIL< 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 103 of file Caching_Utility_T.h.
| typedef ACE_Recyclable_Handler_Cleanup_Strategy<KEY, VALUE, CONTAINER> ACE_Recyclable_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::CLEANUP_STRATEGY |
Definition at line 108 of file Caching_Utility_T.h.
| typedef ACE_Cleanup_Strategy<KEY, VALUE, CONTAINER> ACE_Recyclable_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::CLEANUP_STRATEGY_BASE |
Definition at line 109 of file Caching_Utility_T.h.
| ACE_Recyclable_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::ACE_Recyclable_Handler_Caching_Utility | ( | ACE_Cleanup_Strategy< KEY, VALUE, CONTAINER > * | cleanup_strategy = 0, |
|
| int | delete_cleanup_strategy = 0 | |||
| ) |
Constructor.
Definition at line 120 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_Recyclable_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::~ACE_Recyclable_Handler_Caching_Utility | ( | void | ) |
Destructor.
Definition at line 134 of file Caching_Utility_T.cpp.
{
if (this->delete_cleanup_strategy_)
delete this->cleanup_strategy_;
}
| ACE_Recyclable_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::ARHUTIL | ( | const ARHUTIL< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES > & | ) | [private] |
| int ACE_Recyclable_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 141 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 <= 1)
if (current_map_size == 0)
return 0;
// Calculate the no of entries to remove from the cache depending
// upon the <purge_percent>.
size_t const 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);
// Simply verifying that the key is non-zero.
// This is important for strategies where the minimum
// entry cant be found due to constraints on the type of entry
// to remove.
if (key_to_remove == 0)
return 0;
if (this->cleanup_strategy_->cleanup (container,
key_to_remove,
value_to_remove) == -1)
return -1;
}
return 0;
}
| void ACE_Recyclable_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.
Definition at line 190 of file Caching_Utility_T.cpp.
{
// Starting values.
ITERATOR end = container.end ();
ITERATOR iter = container.begin ();
ATTRIBUTES min = (*iter).int_id_.second ();
key_to_remove = 0;
value_to_remove = 0;
// Found the minimum entry to be purged?
int found = 0;
// The iterator moves thru the container searching for the entry
// with the lowest ATTRIBUTES.
for (;
iter != end;
++iter)
{
// If the <min> entry isnt IDLE_AND_PURGABLE continue until you reach
// the first entry which can be purged. This is the minimum with
// which you will compare the rest of the purgable entries.
if ((*iter).ext_id_.recycle_state () == ACE_RECYCLABLE_IDLE_AND_PURGABLE ||
(*iter).ext_id_.recycle_state () == ACE_RECYCLABLE_PURGABLE_BUT_NOT_IDLE)
{
if (found == 0)
{
min = (*iter).int_id_.second ();
key_to_remove = &(*iter).ext_id_;
value_to_remove = &(*iter).int_id_;
found = 1;
}
else
{
// Ah! an entry with lower ATTTRIBUTES...
if (min > (*iter).int_id_.second ())
{
min = (*iter).int_id_.second ();
key_to_remove = &(*iter).ext_id_;
value_to_remove = &(*iter).int_id_;
}
}
}
}
}
| void ACE_Recyclable_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::operator= | ( | const ARHUTIL< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES > & | ) | [private] |
CLEANUP_STRATEGY_BASE* ACE_Recyclable_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::cleanup_strategy_ [protected] |
This is the default Cleanup Strategy for this utility.
Definition at line 134 of file Caching_Utility_T.h.
int ACE_Recyclable_Handler_Caching_Utility< KEY, VALUE, CONTAINER, ITERATOR, ATTRIBUTES >::delete_cleanup_strategy_ [protected] |
Whether the cleanup_strategy should be destroyed or not.
Definition at line 137 of file Caching_Utility_T.h.
1.7.0