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