10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file.
40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)package org.chromium.mojo.system.impl;
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import org.chromium.mojo.system.Handle;
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import org.chromium.mojo.system.MessagePipeHandle;
90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochimport java.nio.ByteBuffer;
110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochimport java.util.List;
120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/**
140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Implementation of {@link MessagePipeHandle}.
150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class MessagePipeHandleImpl extends HandleBase implements MessagePipeHandle {
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    /**
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)     * @see HandleBase#HandleBase(CoreImpl, int)
200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     */
210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    MessagePipeHandleImpl(CoreImpl core, int mojoHandle) {
220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        super(core, mojoHandle);
230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    }
240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    /**
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)     * @see HandleBase#HandleBase(HandleBase)
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     */
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    MessagePipeHandleImpl(HandleBase handle) {
290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        super(handle);
300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    }
310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    /**
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch     * @see org.chromium.mojo.system.MessagePipeHandle#pass()
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch     */
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    @Override
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    public MessagePipeHandle pass() {
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        return new MessagePipeHandleImpl(this);
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    }
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    /**
410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     * @see MessagePipeHandle#writeMessage(ByteBuffer, List, WriteFlags)
420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     */
430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    @Override
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    public void writeMessage(ByteBuffer bytes, List<? extends Handle> handles, WriteFlags flags) {
450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        mCore.writeMessage(this, bytes, handles, flags);
460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    }
470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    /**
490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     * @see MessagePipeHandle#readMessage(ByteBuffer, int, ReadFlags)
500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch     */
510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    @Override
520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    public ReadMessageResult readMessage(ByteBuffer bytes,
530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            int maxNumberOfHandles,
540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch            ReadFlags flags) {
550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch        return mCore.readMessage(this, bytes, maxNumberOfHandles, flags);
560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    }
570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
59