00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #pragma once
00022
00023 #include <boost/unordered_map.hpp>
00024 #include <boost/shared_ptr.hpp>
00025
00026 #include <drizzled/message.h>
00027 #include <drizzled/identifier/table.h>
00028
00029 namespace drizzled {
00030 namespace message {
00031
00032 class Cache
00033 {
00034 public:
00035 static Cache &singleton()
00036 {
00037 static Cache open_cache;
00038 return open_cache;
00039 }
00040
00041 size_t size() const
00042 {
00043 return cache.size();
00044 }
00045
00046 void rehash(size_t arg)
00047 {
00048 cache.rehash(arg);
00049 }
00050
00051 table::shared_ptr find(const identifier::Table &identifier);
00052 void erase(const identifier::Table &identifier);
00053 bool insert(const identifier::Table &identifier, table::shared_ptr share);
00054 bool insert(const identifier::Table &identifier, Table &share);
00055 private:
00056 typedef boost::unordered_map<identifier::Table::Key, table::shared_ptr> Map;
00057
00058 boost::mutex _access;
00059 Map cache;
00060 };
00061
00062 }
00063 }
00064