12008747941749ad27fe80663d23036ac320e998fJason Sams/*
22008747941749ad27fe80663d23036ac320e998fJason Sams * Copyright (C) 2011 The Android Open Source Project
32008747941749ad27fe80663d23036ac320e998fJason Sams *
42008747941749ad27fe80663d23036ac320e998fJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
52008747941749ad27fe80663d23036ac320e998fJason Sams * you may not use this file except in compliance with the License.
62008747941749ad27fe80663d23036ac320e998fJason Sams * You may obtain a copy of the License at
72008747941749ad27fe80663d23036ac320e998fJason Sams *
82008747941749ad27fe80663d23036ac320e998fJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
92008747941749ad27fe80663d23036ac320e998fJason Sams *
102008747941749ad27fe80663d23036ac320e998fJason Sams * Unless required by applicable law or agreed to in writing, software
112008747941749ad27fe80663d23036ac320e998fJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
122008747941749ad27fe80663d23036ac320e998fJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132008747941749ad27fe80663d23036ac320e998fJason Sams * See the License for the specific language governing permissions and
142008747941749ad27fe80663d23036ac320e998fJason Sams * limitations under the License.
152008747941749ad27fe80663d23036ac320e998fJason Sams */
162008747941749ad27fe80663d23036ac320e998fJason Sams
172008747941749ad27fe80663d23036ac320e998fJason Sams#ifndef ANDROID_RS_FIFO_SOCKET_H
182008747941749ad27fe80663d23036ac320e998fJason Sams#define ANDROID_RS_FIFO_SOCKET_H
192008747941749ad27fe80663d23036ac320e998fJason Sams
202008747941749ad27fe80663d23036ac320e998fJason Sams
212008747941749ad27fe80663d23036ac320e998fJason Sams#include "rsFifo.h"
222008747941749ad27fe80663d23036ac320e998fJason Sams
232008747941749ad27fe80663d23036ac320e998fJason Samsnamespace android {
242008747941749ad27fe80663d23036ac320e998fJason Samsnamespace renderscript {
252008747941749ad27fe80663d23036ac320e998fJason Sams
262008747941749ad27fe80663d23036ac320e998fJason Sams
272008747941749ad27fe80663d23036ac320e998fJason Samsclass FifoSocket {
282008747941749ad27fe80663d23036ac320e998fJason Samspublic:
292008747941749ad27fe80663d23036ac320e998fJason Sams    FifoSocket();
302008747941749ad27fe80663d23036ac320e998fJason Sams    virtual ~FifoSocket();
312008747941749ad27fe80663d23036ac320e998fJason Sams
325f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams    bool init(bool supportNonBlocking = true,
335f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams              bool supportReturnValues = true,
345f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams              size_t maxDataSize = 0);
352008747941749ad27fe80663d23036ac320e998fJason Sams    void shutdown();
362008747941749ad27fe80663d23036ac320e998fJason Sams
375f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams    bool writeAsync(const void *data, size_t bytes, bool waitForSpace = true);
385f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams    void writeWaitReturn(void *ret, size_t retSize);
395f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams    size_t read(void *data, size_t bytes);
405f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams    void readReturn(const void *data, size_t bytes);
415f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams    bool isEmpty();
422008747941749ad27fe80663d23036ac320e998fJason Sams
435f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams    int getWriteFd() {return sv[0];}
445f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams    int getReadFd() {return sv[1];}
452008747941749ad27fe80663d23036ac320e998fJason Sams
462008747941749ad27fe80663d23036ac320e998fJason Samsprotected:
472008747941749ad27fe80663d23036ac320e998fJason Sams    int sv[2];
485f27d6fb0b0b9184ba9820c629fc1354a635e515Jason Sams    bool mShutdown;
492008747941749ad27fe80663d23036ac320e998fJason Sams};
502008747941749ad27fe80663d23036ac320e998fJason Sams
512008747941749ad27fe80663d23036ac320e998fJason Sams}
522008747941749ad27fe80663d23036ac320e998fJason Sams}
532008747941749ad27fe80663d23036ac320e998fJason Sams
542008747941749ad27fe80663d23036ac320e998fJason Sams#endif
55