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

Side by Side Diff: mojo/shell/handle_watcher.h

Issue 64973002: Moves some files into mojo/common (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 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 MOJO_SHELL_HANDLE_WATCHER_H_
6 #define MOJO_SHELL_HANDLE_WATCHER_H_
7
8 #include "base/basictypes.h"
9 #include "base/callback_forward.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "mojo/public/system/core.h"
12
13 namespace base {
14 class Thread;
15 class TickClock;
16 class TimeTicks;
17 }
18
19 namespace mojo {
20 namespace shell {
21 namespace test {
22 class HandleWatcherTest;
23 }
24
25 // HandleWatcher is used to asynchronously wait on a handle and notify a Closure
26 // when the handle is ready, or the deadline has expired.
27 class HandleWatcher {
28 public:
29 HandleWatcher();
30 ~HandleWatcher();
31
32 // Starts listening for |handle|. This implicitly invokes Stop(). In other
33 // words, Start() performs one asynchronous watch at a time. It is ok to call
34 // Start() multiple times, but it cancels any existing watches. |callback| is
35 // notified when the handle is ready, invalid or deadline has passed and is
36 // notified on the thread Start() was invoked on.
37 void Start(MojoHandle handle,
38 MojoWaitFlags wait_flags,
39 MojoDeadline deadline,
40 const base::Closure& callback);
41
42 // Stops listening. Does nothing if not in the process of listening.
43 void Stop();
44
45 // Returns now. Used internally; generally not useful.
46 static base::TimeTicks NowTicks();
47
48 // Converts a MojoDeadline into a TimeTicks.
49 static base::TimeTicks MojoDeadlineToTimeTicks(MojoDeadline deadline);
50
51 private:
52 friend class test::HandleWatcherTest;
53 struct StartState;
54
55 // See description of |StartState::weak_factory| for details.
56 void OnHandleReady();
57
58 // If non-NULL Start() has been invoked.
59 scoped_ptr<StartState> start_state_;
60
61 // Used for getting the time. Only set by tests.
62 static base::TickClock* tick_clock_;
63
64 DISALLOW_COPY_AND_ASSIGN(HandleWatcher);
65 };
66
67 } // namespace shell
68 } // namespace mojo
69
70 #endif // MOJO_SHELL_HANDLE_WATCHER_H_
OLDNEW
« mojo/mojo.gyp ('K') | « mojo/mojo.gyp ('k') | mojo/shell/handle_watcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698