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)#include "nacl_io/pipe/pipe_event_emitter.h" 668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <algorithm> 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace nacl_io { 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PipeEventEmitter::PipeEventEmitter(size_t size) 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) : fifo_(std::max<size_t>(1, size)) { 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) UpdateStatus_Locked(); 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)Error PipeEventEmitter::Read_Locked(char* data, size_t len, int* out_bytes) { 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *out_bytes = fifo_.Read(data, len); 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) UpdateStatus_Locked(); 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return 0; 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)Error PipeEventEmitter::Write_Locked(const char* data, 2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) size_t len, 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int* out_bytes) { 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) *out_bytes = fifo_.Write(data, len); 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) UpdateStatus_Locked(); 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return 0; 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace nacl_io 33