15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// found in the LICENSE file. 468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef LIBRARIES_NACL_IO_PIPE_PIPE_EVENT_EMITTER_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define LIBRARIES_NACL_IO_PIPE_PIPE_EVENT_EMITTER_H_ 768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include <poll.h> 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include <stdint.h> 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include <stdlib.h> 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "nacl_io/fifo_char.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "nacl_io/stream/stream_event_emitter.h" 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "sdk_util/auto_lock.h" 1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "sdk_util/macros.h" 1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace nacl_io { 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PipeEventEmitter; 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)typedef sdk_util::ScopedRef<PipeEventEmitter> ScopedPipeEventEmitter; 2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PipeEventEmitter : public StreamEventEmitter { 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public: 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PipeEventEmitter(size_t size); 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Error Read_Locked(char* data, size_t len, int* out_bytes); 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Error Write_Locked(const char* data, size_t len, int* out_bytes); 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) protected: 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual FIFOChar* in_fifo() { return &fifo_; } 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual FIFOChar* out_fifo() { return &fifo_; } 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private: 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) FIFOChar fifo_; 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PipeEventEmitter); 3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}; 3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace nacl_io 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // LIBRARIES_NACL_IO_PIPE_PIPE_EVENT_EMITTER_H_ 42