10f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/*
20f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Copyright (C) 2011 The Android Open Source Project
30f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *
40f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
50f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * you may not use this file except in compliance with the License.
60f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * You may obtain a copy of the License at
70f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *
80f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *      http://www.apache.org/licenses/LICENSE-2.0
90f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines *
100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Unless required by applicable law or agreed to in writing, software
110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See the License for the specific language governing permissions and
140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * limitations under the License.
150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */
160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#ifndef ANDROID_RS_FIFO_SOCKET_H
180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#define ANDROID_RS_FIFO_SOCKET_H
190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsFifo.h"
220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesnamespace android {
240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesnamespace renderscript {
250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesclass FifoSocket {
280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinespublic:
290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    FifoSocket();
300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    virtual ~FifoSocket();
310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    bool init(bool supportNonBlocking = true,
330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines              bool supportReturnValues = true,
340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines              size_t maxDataSize = 0);
350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    void shutdown();
360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    bool writeAsync(const void *data, size_t bytes, bool waitForSpace = true);
380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    void writeWaitReturn(void *ret, size_t retSize);
390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    size_t read(void *data, size_t bytes);
400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    void readReturn(const void *data, size_t bytes);
410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    bool isEmpty();
420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    int getWriteFd() {return sv[0];}
440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    int getReadFd() {return sv[1];}
450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesprotected:
470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    int sv[2];
480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines    bool mShutdown;
490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines};
500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}
520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}
530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines
540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#endif
55