Home | History | Annotate | Download | only in pipe
      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