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