~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/message/cache.cc

  • Committer: pcrews
  • Date: 2011-05-24 17:36:24 UTC
  • mfrom: (1099.4.232 drizzle)
  • Revision ID: pcrews@lucid32-20110524173624-mwr1bvq6fa1r01ao
Updated translations + 2011.05.18 tarball tag

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
 
  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