00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00021
00022 #ifndef NET_INSTAWEB_UTIL_PUBLIC_QUEUED_WORKER_H_
00023 #define NET_INSTAWEB_UTIL_PUBLIC_QUEUED_WORKER_H_
00024
00025 #include "net/instaweb/util/public/basictypes.h"
00026 #include "net/instaweb/util/public/thread_system.h"
00027 #include "net/instaweb/util/public/worker.h"
00028
00029 namespace net_instaweb {
00030
00031 class Function;
00032
00034 class QueuedWorker : public Worker {
00035 public:
00038 explicit QueuedWorker(ThreadSystem* runtime);
00039
00041 virtual ~QueuedWorker();
00042
00048 void RunInWorkThread(Function* closure);
00049
00053 void TimedWait(ThreadSystem::Condvar* condvar, int64 timeout_ms);
00054
00055 private:
00056 virtual bool IsPermitted(Function* closure);
00057
00058 DISALLOW_COPY_AND_ASSIGN(QueuedWorker);
00059 };
00060
00061 }
00062
00063 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_QUEUED_WORKER_H_