00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <config.h>
00022 #include <drizzled/pthread_globals.h>
00023 #include <drizzled/message/cache.h>
00024 #include <drizzled/util/find_ptr.h>
00025
00026 namespace drizzled {
00027 namespace message {
00028
00029 table::shared_ptr Cache::find(const identifier::Table &identifier)
00030 {
00031 boost_unique_lock_t scoped_lock(_access);
00032 if (Map::mapped_type* ptr= find_ptr(cache, identifier.getKey()))
00033 return *ptr;
00034 return table::shared_ptr();
00035 }
00036
00037 void Cache::erase(const identifier::Table &identifier)
00038 {
00039 boost_unique_lock_t scoped_lock(_access);
00040 cache.erase(identifier.getKey());
00041 }
00042
00043 bool Cache::insert(const identifier::Table &identifier, table::shared_ptr share)
00044 {
00045 boost_unique_lock_t scoped_lock(_access);
00046 return cache.insert(std::make_pair(identifier.getKey(), share)).second;
00047 }
00048
00049 bool Cache::insert(const identifier::Table &identifier, drizzled::message::Table &message)
00050 {
00051 return insert(identifier, table::shared_ptr(new message::Table(message)));
00052 }
00053
00054 }
00055 }