Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: chrome/common/worker_thread_ticker.h

Issue 1815623004: Remove Hung plugin detector (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_windowed_plugins
Patch Set: fix compile Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/common/pref_names.cc ('k') | chrome/common/worker_thread_ticker.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_COMMON_WORKER_THREAD_TICKER_H_
6 #define CHROME_COMMON_WORKER_THREAD_TICKER_H_
7
8 #include <vector>
9
10 #include "base/macros.h"
11 #include "base/synchronization/lock.h"
12 #include "base/threading/thread.h"
13
14 // This class provides the following functionality:
15 // It invokes a set of registered handlers at periodic intervals in
16 // the context of an arbitrary worker thread.
17 // The timer runs on a separate thread, so it will run even if the current
18 // thread is hung. Similarly, the callbacks will be called on a separate
19 // thread so they won't block the main thread.
20 class WorkerThreadTicker {
21 public:
22 // This callback interface to be implemented by clients of this
23 // class
24 class Callback {
25 public:
26 // Gets invoked when the timer period is up
27 virtual void OnTick() = 0;
28
29 protected:
30 virtual ~Callback() {}
31 };
32
33 // tick_interval is the periodic interval in which to invoke the
34 // registered handlers (in milliseconds)
35 explicit WorkerThreadTicker(int tick_interval);
36
37 ~WorkerThreadTicker();
38
39 // Registers a callback handler interface
40 // tick_handler is the handler interface to register. The ownership of this
41 // object is not transferred to this class.
42 bool RegisterTickHandler(Callback *tick_handler);
43
44 // Unregisters a callback handler interface
45 // tick_handler is the handler interface to unregister
46 bool UnregisterTickHandler(Callback *tick_handler);
47
48 // Starts the ticker. Returns false if the ticker is already running
49 // or if the Start fails.
50 bool Start();
51 // Stops the ticker and waits for all callbacks. to be done. This method
52 // does not provide a way to stop without waiting for the callbacks to be
53 // done because this is inherently risky.
54 // Returns false is the ticker is not running
55 bool Stop();
56 bool IsRunning() const {
57 return is_running_;
58 }
59
60 void set_tick_interval(int tick_interval) {
61 tick_interval_ = base::TimeDelta::FromMilliseconds(tick_interval);
62 }
63
64 private:
65 void ScheduleTimerTask();
66
67 void TimerTask();
68
69 // A list type that holds all registered callback interfaces
70 typedef std::vector<Callback*> TickHandlerListType;
71
72 // Lock to protect is_running_ and tick_handler_list_
73 base::Lock lock_;
74
75 base::Thread timer_thread_;
76 bool is_running_;
77
78 // The interval at which the callbacks are to be invoked
79 base::TimeDelta tick_interval_;
80
81 // A list that holds all registered callback interfaces
82 TickHandlerListType tick_handler_list_;
83
84 DISALLOW_COPY_AND_ASSIGN(WorkerThreadTicker);
85 };
86
87 #endif // CHROME_COMMON_WORKER_THREAD_TICKER_H_
OLDNEW
« no previous file with comments | « chrome/common/pref_names.cc ('k') | chrome/common/worker_thread_ticker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698