Page Speed Optimization Libraries
1.4.26.1
|
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_