1
#ifndef __REPLAY_LOG__SUPERVISOR__H__
2
#define __REPLAY_LOG__SUPERVISOR__H__
6
typedef void (*troubles)(void *a_context, Error const& a_error);
8
void set_troubles(void *a_context, troubles a_function);
10
void has_troubles(Error const& error);
14
template< typename T > class Queue;
15
typedef Queue< Query > Query_Queue;
17
class Supervisor : None_Copyable
20
typedef Query_Queue Task;
21
Supervisor(std::size_t a_free_count);
22
virtual ~Supervisor();
26
Mutex::Lock lk(m_mutex);
31
Mutex::Lock lk(m_mutex);
36
Mutex::Lock lk(m_mutex);
43
virtual bool task_complete(Worker *a_worker, Task *a_task)
45
Mutex::Lock lk(m_mutex);
46
return do_task_complete(a_worker);
48
virtual bool task_crash(Worker *a_worker, Task *a_task, Error const &a_error)
50
Mutex::Lock lk(m_mutex);
51
return do_task_crash(a_worker);
53
virtual void worker_complete(Worker *a_worker)
55
Mutex::Lock lk(m_mutex);
56
do_worker_complete(a_worker);
65
bool do_task_complete (Worker *);
66
bool do_task_crash (Worker *);
67
void do_worker_complete(Worker *);
68
bool is_flush() const;
71
bool is_work(Task *) const;
72
void task_start(Task*);
75
typedef boost::shared_ptr<Impl> Impl_Pointer;
81
#endif // __REPLAY_LOG__SUPERVISOR__H__