diff options
Diffstat (limited to 'TAO/orbsvcs/examples/FaultTolerance/RolyPoly/LogStdMap.h')
-rw-r--r-- | TAO/orbsvcs/examples/FaultTolerance/RolyPoly/LogStdMap.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/TAO/orbsvcs/examples/FaultTolerance/RolyPoly/LogStdMap.h b/TAO/orbsvcs/examples/FaultTolerance/RolyPoly/LogStdMap.h new file mode 100644 index 00000000000..29a5ff2be65 --- /dev/null +++ b/TAO/orbsvcs/examples/FaultTolerance/RolyPoly/LogStdMap.h @@ -0,0 +1,56 @@ +// file : RolyPoly/LogStdMap.h +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#ifndef LOG_STD_MAP_H +#define LOG_STD_MAP_H + +#include <map> + +template <typename RI, typename RV> +class Log +{ +public: + typedef RI RecordIdType; + typedef RV RecordValueType; + +private: + typedef + std::map <RecordIdType, RecordValueType> + Map_; + +public: + class Duplicate {}; + class NotFound {}; + + void + insert (RecordIdType const& ri, RecordValueType const& rv) + throw (Duplicate) + { + if (!map_.insert (std::make_pair (ri, rv)).second) + { + throw Duplicate (); + } + } + + bool + contains (RecordIdType const& ri) const + { + return map_.count (ri) != 0; + } + + + RecordValueType const& + lookup (RecordIdType const& ri) const throw (NotFound) + { + typename Map_::const_iterator i = map_.find (ri); + + if (i != map_.end ()) return i->second; + else throw NotFound (); + } + +private: + Map_ map_; +}; + +#endif // LOG_STD_MAP_H |