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.system.impl;
6 
7 import org.chromium.mojo.system.DataPipe.ConsumerHandle;
8 import org.chromium.mojo.system.DataPipe.ReadFlags;
9 import org.chromium.mojo.system.ResultAnd;
10 
11 import java.nio.ByteBuffer;
12 
13 /**
14  * Implementation of {@link ConsumerHandle}.
15  */
16 class DataPipeConsumerHandleImpl extends HandleBase implements ConsumerHandle {
17     /**
18      * @see HandleBase#HandleBase(CoreImpl, int)
19      */
DataPipeConsumerHandleImpl(CoreImpl core, int mojoHandle)20     DataPipeConsumerHandleImpl(CoreImpl core, int mojoHandle) {
21         super(core, mojoHandle);
22     }
23 
24     /**
25      * @see HandleBase#HandleBase(HandleBase)
26      */
DataPipeConsumerHandleImpl(HandleBase other)27     DataPipeConsumerHandleImpl(HandleBase other) {
28         super(other);
29     }
30 
31     /**
32      * @see org.chromium.mojo.system.Handle#pass()
33      */
34     @Override
pass()35     public ConsumerHandle pass() {
36         return new DataPipeConsumerHandleImpl(this);
37     }
38 
39     /**
40      * @see ConsumerHandle#discardData(int, ReadFlags)
41      */
42     @Override
discardData(int numBytes, ReadFlags flags)43     public int discardData(int numBytes, ReadFlags flags) {
44         return mCore.discardData(this, numBytes, flags);
45     }
46 
47     /**
48      * @see ConsumerHandle#readData(ByteBuffer, ReadFlags)
49      */
50     @Override
readData(ByteBuffer elements, ReadFlags flags)51     public ResultAnd<Integer> readData(ByteBuffer elements, ReadFlags flags) {
52         return mCore.readData(this, elements, flags);
53     }
54 
55     /**
56      * @see ConsumerHandle#beginReadData(int, ReadFlags)
57      */
58     @Override
beginReadData(int numBytes, ReadFlags flags)59     public ByteBuffer beginReadData(int numBytes, ReadFlags flags) {
60         return mCore.beginReadData(this, numBytes, flags);
61     }
62 
63     /**
64      * @see ConsumerHandle#endReadData(int)
65      */
66     @Override
endReadData(int numBytesRead)67     public void endReadData(int numBytesRead) {
68         mCore.endReadData(this, numBytesRead);
69     }
70 }
71