BDE 4.14.0 Production release
|
#include <bdlt_calendarcache.h>
Public Member Functions | |
CalendarCache (CalendarLoader *loader, bslma::Allocator *basicAllocator=0) | |
CalendarCache (CalendarLoader *loader, const bsls::TimeInterval &timeout, bslma::Allocator *basicAllocator=0) | |
~CalendarCache () | |
Destroy this object. | |
bsl::shared_ptr< const Calendar > | getCalendar (const char *calendarName) |
int | invalidate (const char *calendarName) |
int | invalidateAll () |
bsl::shared_ptr< const Calendar > | lookupCalendar (const char *calendarName) const |
Datetime | lookupLoadTime (const char *calendarName) const |
This class implements an efficient cache of read-only bdlt::Calendar
objects that are loaded into the cache, using a calendar loader supplied at construction, as a side-effect of the getCalendar
manipulator. Calendars in the cache can be invalidated, and removed from the cache via the invalidate
and invalidateAll
methods. In addition, calendars in the cache can be made to expire based on a timeout that may be optionally supplied at construction. The bsl::shared_ptr<const bdlt::Calendar>
objects returned from the getCalendar
and lookupCalendar
methods allow for the safe removal of calendars from the cache that may still have outstanding references to them.
This container is exception neutral with no guarantee of rollback: if an exception is thrown during the invocation of a method on a pre-existing instance, the container is left in a valid state, but its value is undefined. In no event is memory leaked.
This class is fully thread-safe (see bsldoc_glossary ).
|
explicit |
Create an empty calendar cache that uses the specified loader
to load calendars on demand and has no timeout. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. Calendars loaded into this cache remain valid for retrieval until they have been explicitly invalidated (via either the invalidate
or invalidateAll
methods), or until this object is destroyed. The behavior is undefined unless loader
remains valid throughout the lifetime of this cache.
bdlt::CalendarCache::CalendarCache | ( | CalendarLoader * | loader, |
const bsls::TimeInterval & | timeout, | ||
bslma::Allocator * | basicAllocator = 0 |
||
) |
Create an empty calendar cache that uses the specified loader
to load calendars on demand and has the specified timeout
interval indicating the length of time that calendars remain valid for subsequent retrieval from the cache after they have been loaded. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. The behavior is undefined unless bsls::TimeInterval() <= timeout <= bsls::TimeInterval(INT_MAX, 0)
, and loader
remains valid throughout the lifetime of this cache. Note that a timeout
value of 0 indicates that a calendar will be loaded into the cache by each (successful) call to the getCalendar
method.
bdlt::CalendarCache::~CalendarCache | ( | ) |
bsl::shared_ptr< const Calendar > bdlt::CalendarCache::getCalendar | ( | const char * | calendarName | ) |
Return a shared pointer providing non-modifiable access to the calendar having the specified calendarName
in this calendar cache, loading the calendar into the cache using the loader that was supplied at construction if the calendar is not already present in the cache or if the calendar has expired (i.e., per a timeout optionally supplied at construction). If the loader fails, whether in loading a calendar for the first time or in reloading a calendar that has expired, return an empty shared pointer.
int bdlt::CalendarCache::invalidate | ( | const char * | calendarName | ) |
Invalidate the calendar having the specified calendarName
in this calendar cache, and remove it from the cache. If a calendar having calendarName
is not present in this cache, this method has no effect. Return the number of calendars that were invalidated. Note that a calendar that has been invalidated in the cache remains valid to all outstanding references to it, obtained via earlier calls to the getCalendar
and lookupCalendar
methods, until all of those references have been destroyed.
int bdlt::CalendarCache::invalidateAll | ( | ) |
Invalidate all calendars in this calendar cache, and remove them from the cache. Return the number of calendars that were invalidated. Note that a calendar that has been invalidated in the cache remains valid to all outstanding references to it, obtained via earlier calls to the getCalendar
and lookupCalendar
methods, until all of those references have been destroyed.
bsl::shared_ptr< const Calendar > bdlt::CalendarCache::lookupCalendar | ( | const char * | calendarName | ) | const |
Return a shared pointer providing non-modifiable access to the calendar having the specified calendarName
in this calendar cache. If the calendar having calendarName
is not found in the cache, or if the calendar has expired (i.e., per a timeout optionally supplied at construction), return an empty shared pointer.
Datetime bdlt::CalendarCache::lookupLoadTime | ( | const char * | calendarName | ) | const |
Return the datetime, in Coordinated Universal Time (UTC), at which the calendar having the specified calendarName
was loaded into this calendar cache. If the calendar having calendarName
is not found in the cache, or if the calendar has expired (i.e., per a timeout optionally supplied at construction), return Datetime()
.