00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #pragma once
00022
00023 #include <boost/thread/mutex.hpp>
00024
00025 #include <drizzled/identifier/user.h>
00026 #include <drizzled/session/cache.h>
00027
00028 namespace drizzled {
00029 namespace generator {
00030
00031 class Session
00032 {
00033 session::Cache::list local_list;
00034 session::Cache::list::const_iterator iter;
00035 identifier::User::const_reference user;
00036
00037 public:
00038
00039 Session(identifier::User::const_reference arg) :
00040 user(arg)
00041 {
00042 boost::mutex::scoped_lock scopedLock(session::Cache::singleton().mutex());
00043 local_list= session::Cache::singleton().getCache();
00044 iter= local_list.begin();
00045 }
00046
00047 operator drizzled::Session::pointer()
00048 {
00049 while (iter != local_list.end())
00050 {
00051 drizzled::Session::pointer ret= iter->get();
00052 iter++;
00053
00054 if (ret->isViewable(user))
00055 return ret;
00056 }
00057 return drizzled::Session::pointer();
00058 }
00059 };
00060
00061 }
00062 }
00063