~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/message/cache.cc

  • Committer: Mark Atwood
  • Date: 2012-01-04 16:59:32 UTC
  • mfrom: (2478.2.3 real-key-use-catalog)
  • Revision ID: me@mark.atwood.name-20120104165932-cm0xqs4by0u3p4cy
mergeĀ lp:~stewart/drizzle/key-use-catalog

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 */
20
20
 
21
21
#include <config.h>
22
 
 
23
22
#include <drizzled/pthread_globals.h>
24
23
#include <drizzled/message/cache.h>
 
24
#include <drizzled/util/find_ptr.h>
25
25
 
26
26
namespace drizzled {
27
 
 
28
27
namespace message {
29
28
 
30
29
table::shared_ptr Cache::find(const identifier::Table &identifier)
31
30
{
32
 
  boost_unique_lock_t scoped_lock(_access);
33
 
 
34
 
  Map::iterator iter= cache.find(identifier.getKey());
35
 
  if (iter != cache.end())
36
 
  {
37
 
    return (*iter).second;
38
 
  }
39
 
 
 
31
  boost::mutex::scoped_lock scoped_lock(_access);
 
32
  if (Map::mapped_type* ptr= find_ptr(cache, identifier.getKey()))
 
33
    return *ptr;
40
34
  return table::shared_ptr();
41
35
}
42
36
 
43
37
void Cache::erase(const identifier::Table &identifier)
44
38
{
45
 
  boost_unique_lock_t scoped_lock(_access);
46
 
  
 
39
  boost::mutex::scoped_lock scoped_lock(_access);
47
40
  cache.erase(identifier.getKey());
48
41
}
49
42
 
50
43
bool Cache::insert(const identifier::Table &identifier, table::shared_ptr share)
51
44
{
52
 
  boost_unique_lock_t scoped_lock(_access);
53
 
 
54
 
  std::pair<Map::iterator, bool> ret=
55
 
    cache.insert(std::make_pair(identifier.getKey(), share));
56
 
 
57
 
  return ret.second;
 
45
  boost::mutex::scoped_lock scoped_lock(_access);
 
46
  return cache.insert(std::make_pair(identifier.getKey(), share)).second;
58
47
}
59
48
 
60
49
bool Cache::insert(const identifier::Table &identifier, drizzled::message::Table &message)
61
50
{
62
 
  boost_unique_lock_t scoped_lock(_access);
63
 
 
64
 
  table::shared_ptr share;
65
 
  share.reset(new message::Table(message));
66
 
 
67
 
  std::pair<Map::iterator, bool> ret=
68
 
    cache.insert(std::make_pair(identifier.getKey(), share));
69
 
 
70
 
  return ret.second;
 
51
  return insert(identifier, table::shared_ptr(new message::Table(message)));
71
52
}
72
53
 
73
 
} /* namespace definition */
74
 
} /* namespace drizzled */
 
54
} // namespace message
 
55
} // namespace drizzled