~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/message/cache.cc

  • Committer: Lee Bieber
  • Date: 2011-03-18 04:10:25 UTC
  • mfrom: (2241.1.2 build)
  • Revision ID: kalebral@gmail.com-20110318041025-1xoj1azy6zobhnbm
Merge Stewart - refactoring of default values
Merge Olaf - more refactoring

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
19
 */
20
20
 
21
 
#include "config.h"
22
 
 
 
21
#include <config.h>
23
22
#include <drizzled/pthread_globals.h>
24
 
#include "drizzled/message/cache.h"
 
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
31
  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
 
 
 
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
39
  boost_unique_lock_t scoped_lock(_access);
46
 
  
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
45
  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;
 
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