1983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams/* 2983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * Copyright (C) 2017 The Android Open Source Project 3983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * 4983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * Licensed under the Apache License, Version 2.0 (the "License"); 5983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * you may not use this file except in compliance with the License. 6983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * You may obtain a copy of the License at 7983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * 8983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * http://www.apache.org/licenses/LICENSE-2.0 9983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * 10983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * Unless required by applicable law or agreed to in writing, software 11983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * distributed under the License is distributed on an "AS IS" BASIS, 12983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * See the License for the specific language governing permissions and 14983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * limitations under the License. 15983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams */ 16983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams 17983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adamspackage com.android.internal.os; 18983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams 19983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adamsimport java.io.ByteArrayOutputStream; 20983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adamsimport java.io.IOException; 21983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adamsimport java.io.OutputStream; 22983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams 23983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams/** 24983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams * Helper class to get byte data through a pipe from a client app. Also {@see TransferPipe}. 25983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams */ 26983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adamspublic class ByteTransferPipe extends TransferPipe { 27983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams static final String TAG = "ByteTransferPipe"; 28983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams 29983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams private ByteArrayOutputStream mOutputStream; 30983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams 31983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams public ByteTransferPipe() throws IOException { 32983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams super(); 33983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams } 34983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams 35983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams public ByteTransferPipe(String bufferPrefix) throws IOException { 36983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams super(bufferPrefix, "ByteTransferPipe"); 37983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams } 38983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams 39983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams @Override 40983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams protected OutputStream getNewOutputStream() { 41983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams mOutputStream = new ByteArrayOutputStream(); 42983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams return mOutputStream; 43983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams } 44983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams 45983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams public byte[] get() throws IOException { 46983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams go(null); 47983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams return mOutputStream.toByteArray(); 48983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams } 49983829fec505c35b054c917668e9a54f2f4c26e4Kweku Adams} 50