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 #include "nacl_io/pipe/pipe_event_emitter.h"
6 
7 #include <algorithm>
8 
9 namespace nacl_io {
10 
PipeEventEmitter(size_t size)11 PipeEventEmitter::PipeEventEmitter(size_t size)
12     : fifo_(std::max<size_t>(1, size)) {
13   UpdateStatus_Locked();
14 }
15 
Read_Locked(char * data,size_t len,int * out_bytes)16 Error PipeEventEmitter::Read_Locked(char* data, size_t len, int* out_bytes) {
17   *out_bytes = fifo_.Read(data, len);
18 
19   UpdateStatus_Locked();
20   return 0;
21 }
22 
Write_Locked(const char * data,size_t len,int * out_bytes)23 Error PipeEventEmitter::Write_Locked(const char* data,
24                                      size_t len,
25                                      int* out_bytes) {
26   *out_bytes = fifo_.Write(data, len);
27 
28   UpdateStatus_Locked();
29   return 0;
30 }
31 
32 }  // namespace nacl_io
33