1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef LIBRARIES_NACL_IO_PIPE_PIPE_EVENT_EMITTER_H_ 6 #define LIBRARIES_NACL_IO_PIPE_PIPE_EVENT_EMITTER_H_ 7 8 #include <poll.h> 9 #include <stdint.h> 10 #include <stdlib.h> 11 12 #include "nacl_io/fifo_char.h" 13 #include "nacl_io/stream/stream_event_emitter.h" 14 15 #include "sdk_util/auto_lock.h" 16 #include "sdk_util/macros.h" 17 18 namespace nacl_io { 19 20 class PipeEventEmitter; 21 typedef sdk_util::ScopedRef<PipeEventEmitter> ScopedPipeEventEmitter; 22 23 class PipeEventEmitter : public StreamEventEmitter { 24 public: 25 PipeEventEmitter(size_t size); 26 27 Error Read_Locked(char* data, size_t len, int* out_bytes); 28 Error Write_Locked(const char* data, size_t len, int* out_bytes); 29 30 protected: 31 virtual FIFOChar* in_fifo() { return &fifo_; } 32 virtual FIFOChar* out_fifo() { return &fifo_; } 33 34 private: 35 FIFOChar fifo_; 36 DISALLOW_COPY_AND_ASSIGN(PipeEventEmitter); 37 }; 38 39 } // namespace nacl_io 40 41 #endif // LIBRARIES_NACL_IO_PIPE_PIPE_EVENT_EMITTER_H_ 42