Page Speed Optimization Libraries  1.2.24.1
net/instaweb/util/public/queued_alarm.h
Go to the documentation of this file.
00001 // Copyright 2011 Google Inc.
00016 
00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_QUEUED_ALARM_H_
00018 #define NET_INSTAWEB_UTIL_PUBLIC_QUEUED_ALARM_H_
00019 
00020 #include "net/instaweb/util/public/basictypes.h"
00021 #include "net/instaweb/util/public/function.h"
00022 #include "net/instaweb/util/public/queued_worker_pool.h"
00023 #include "net/instaweb/util/public/scheduler.h"
00024 #include "net/instaweb/util/public/scoped_ptr.h"
00025 
00026 namespace net_instaweb {
00027 
00028 class AbstractMutex;
00029 
00033 class QueuedAlarm : public Function {
00034  public:
00044   QueuedAlarm(Scheduler* scheduler,
00045               QueuedWorkerPool::Sequence* sequence,
00046               int64 wakeup_time_us,
00047               Function* callback);
00048 
00058   void CancelAlarm();
00059 
00060  private:
00061   virtual ~QueuedAlarm();
00062 
00064   virtual void Run();
00065 
00067   void SequencePortionOfRun();
00068 
00072   void SequencePortionOfRunCancelled();
00073 
00074   scoped_ptr<AbstractMutex> mutex_;
00075   Scheduler* scheduler_;
00076   QueuedWorkerPool::Sequence* sequence_;
00077   Function* callback_;
00078   Scheduler::Alarm* alarm_;
00079 
00080   bool canceled_;
00081   bool queued_sequence_portion_;
00082 };
00083 
00084 }  
00085 
00086 #endif  ///< NET_INSTAWEB_UTIL_PUBLIC_QUEUED_ALARM_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines