• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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.bindings;
6 
7 import org.chromium.mojo.system.MessagePipeHandle;
8 
9 /**
10  * One end of the message pipe representing a request to create an implementation to be bound to it.
11  * The other end of the pipe is bound to a proxy, which can be used immediately, while the
12  * InterfaceRequest is being sent.
13  * <p>
14  * InterfaceRequest are built using |Interface.Manager|.
15  *
16  * @param <P> the type of the remote interface proxy.
17  */
18 public class InterfaceRequest<P extends Interface> implements HandleOwner<MessagePipeHandle> {
19 
20     /**
21      * The handle which will be sent and will be connected to the implementation.
22      */
23     private final MessagePipeHandle mHandle;
24 
25     /**
26      * Constructor.
27      *
28      * @param handle the handle which will be sent and will be connected to the implementation.
29      */
InterfaceRequest(MessagePipeHandle handle)30     InterfaceRequest(MessagePipeHandle handle) {
31         mHandle = handle;
32     }
33 
34     /**
35      * @see HandleOwner#passHandle()
36      */
37     @Override
passHandle()38     public MessagePipeHandle passHandle() {
39         return mHandle.pass();
40     }
41 
42     /**
43      * @see java.io.Closeable#close()
44      */
45     @Override
close()46     public void close() {
47         mHandle.close();
48     }
49 
50     /**
51      * Returns an {@link InterfaceRequest} that wraps the given handle. This method is not type safe
52      * and should be avoided unless absolutely necessary.
53      */
54     @SuppressWarnings("rawtypes")
asInterfaceRequestUnsafe(MessagePipeHandle handle)55     public static InterfaceRequest asInterfaceRequestUnsafe(MessagePipeHandle handle) {
56         return new InterfaceRequest(handle);
57     }
58 }
59