22 #include <plugin/user_locks/module.h>
24 #include <boost/thread/locks.hpp>
28 namespace user_locks {
31 bool Barriers::create(
const user_locks::Key &arg, drizzled::session_id_t owner)
33 boost::unique_lock<boost::mutex> scope(mutex);
34 return barrier_map.insert(std::make_pair(arg,
new Barrier(owner))).second;
37 bool Barriers::create(
const user_locks::Key &arg, drizzled::session_id_t owner, int64_t wait_count)
39 boost::unique_lock<boost::mutex> scope(mutex);
40 return barrier_map.insert(std::make_pair(arg,
new Barrier(owner, wait_count))).second;
51 return_t Barriers::release(
const user_locks::Key &arg, drizzled::session_id_t owner)
53 boost::unique_lock<boost::mutex> scope(mutex);
54 Map::iterator iter= barrier_map.find(arg);
57 if ( iter == barrier_map.end())
60 if (not iter->second->getOwner() == owner)
63 iter->second->signal();
64 (void)barrier_map.erase(arg);
71 boost::unique_lock<boost::mutex> scope(mutex);
72 Map::iterator iter= barrier_map.find(arg);
74 if (iter != barrier_map.end())
77 return Barrier::shared_ptr();
80 void Barriers::Copy(Map &arg)
82 boost::unique_lock<boost::mutex> scope(mutex);