21 #include <boost/thread/mutex.hpp>
22 #include <boost/thread/condition_variable.hpp>
23 #include <boost/unordered_map.hpp>
24 #include <boost/unordered/unordered_set.hpp>
26 #include <plugin/user_locks/lock.h>
30 #include <drizzled/session.h>
44 const size_t LARGEST_LOCK_NAME= 64;
49 typedef boost::unordered_map<user_locks::Key, user_locks::Lock::shared_ptr> LockMap;
51 static Locks &getInstance(
void)
53 static Locks instance;
57 void waitCreate(int64_t wait_for= 2);
59 bool lock(drizzled::session_id_t id_arg,
const user_locks::Key &arg, int64_t wait_for= 0);
60 bool lock(drizzled::session_id_t id_arg,
const user_locks::Keys &arg);
61 locks::return_t release(
const user_locks::Key &arg, drizzled::session_id_t &id_arg,
bool and_wait=
false);
63 bool isUsed(
const user_locks::Key &arg, drizzled::session_id_t &id_arg);
64 void Copy(LockMap &lock_map);
68 boost::condition_variable create_cond;
69 boost::condition_variable release_cond;