1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdochpackage org.chromium.mojo.bindings;
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport org.chromium.mojo.system.MessagePipeHandle;
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch/**
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * One end of the message pipe representing a request to create an implementation to be bound to it.
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * The other end of the pipe is bound to a proxy, which can be used immediately, while the
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * InterfaceRequest is being sent.
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * <p>
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * InterfaceRequest are built using |Interface.Manager|.
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch *
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * @param <P> the type of the remote interface proxy.
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch */
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccipublic class InterfaceRequest<P extends Interface> implements HandleOwner<MessagePipeHandle> {
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * The handle which will be sent and will be connected to the implementation.
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    private final MessagePipeHandle mHandle;
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Constructor.
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     *
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @param handle the handle which will be sent and will be connected to the implementation.
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    InterfaceRequest(MessagePipeHandle handle) {
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        mHandle = handle;
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @see HandleOwner#passHandle()
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    @Override
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public MessagePipeHandle passHandle() {
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        return mHandle.pass();
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @see java.io.Closeable#close()
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    @Override
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public void close() {
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        mHandle.close();
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
51