[#BloombergLP-bdlt-TimetableCache]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlt.adoc[bdlt]::TimetableCache
:relfileprefix: ../../
:mrdocs:

Efficient cache of read&hyphen;only `bdlt&colon;&colon;Timetable` objects&period;

== Synopsis

Declared in `&lt;bdlt&lowbar;timetablecache&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class TimetableCache;
----

== Description

This class implements an efficient cache of _read&hyphen;only_ `bdlt&colon;&colon;Timetable` objects that are loaded into the cache, using a timetable loader supplied at construction, as a side&hyphen;effect of the `getTimetable` manipulator&period; Timetables in the cache can be invalidated, and removed from the cache via the `invalidate` and `invalidateAll` methods&period; In addition, timetables in the cache can be made to expire based on a timeout that may be optionally supplied at construction&period; The `bsl&colon;&colon;shared&lowbar;ptr&lt;const bdlt&colon;&colon;Timetable&gt;` objects returned from the `getTimetable` and `lookupTimetable` methods allow for the safe removal of timetables from the cache that may still have outstanding references to them&period;

This container is _exception_ _neutral_ with no guarantee of rollback&colon; if an exception is thrown during the invocation of a method on a pre&hyphen;existing instance, the container is left in a valid state, but its value is undefined&period; In no event is memory leaked&period;

This class is fully thread&hyphen;safe (see `bsldoc&lowbar;glossary`)&period;

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlt/TimetableCache/2constructor-07.adoc[`TimetableCache`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bdlt/TimetableCache/2destructor.adoc[`&#126;TimetableCache`] [.small]#[destructor]#
| Destroy this object&period;
| xref:BloombergLP/bdlt/TimetableCache/getTimetable.adoc[`getTimetable`] 
| Return a shared pointer to the named timetable, loading it if needed&period;
| xref:BloombergLP/bdlt/TimetableCache/invalidate.adoc[`invalidate`] 
| Invalidate and remove the named timetable from this cache&period;
| xref:BloombergLP/bdlt/TimetableCache/invalidateAll.adoc[`invalidateAll`] 
| Invalidate and remove all timetables from this cache&period;
| xref:BloombergLP/bdlt/TimetableCache/lookupLoadTime.adoc[`lookupLoadTime`] 
| Return the UTC datetime when the named timetable was loaded&period;
| xref:BloombergLP/bdlt/TimetableCache/lookupTimetable.adoc[`lookupTimetable`] 
| Look up a timetable by name without loading it&period;
| xref:BloombergLP/bdlt/TimetableCache/2conversion.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;TimetableCache, UsesBslmaAllocator&gt;`] 
| Declare that this type uses a `bslma` allocator&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
