1 // Copyright 2016 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 package org.chromium.mojo.system;
6 
7 import org.chromium.mojo.system.Core.HandleSignals;
8 
9 /**
10  * Watches a handle for signals being satisfied.
11  */
12 public interface Watcher {
13     /**
14      * Callback passed to {@link Watcher#start}.
15      */
16     public interface Callback {
17         /**
18          * Called when the handle is ready.
19          */
onResult(int result)20         public void onResult(int result);
21     }
22 
23     /**
24      * Starts watching a handle.
25      */
start(Handle handle, HandleSignals signals, Callback callback)26     int start(Handle handle, HandleSignals signals, Callback callback);
27 
28     /**
29      * Cancels an already-started watch.
30      */
cancel()31     void cancel();
32 
33     /**
34      * Destroys the underlying implementation. Other methods will fail after destroy has been
35      * called.
36      */
destroy()37     void destroy();
38 }
39