summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/examples/FaultTolerance/RolyPoly/LogStdMap.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/examples/FaultTolerance/RolyPoly/LogStdMap.h')
-rw-r--r--TAO/orbsvcs/examples/FaultTolerance/RolyPoly/LogStdMap.h56
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