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