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/socket/udp_event_emitter.h" 668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "sdk_util/auto_lock.h" 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace nacl_io { 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)UdpEventEmitter::UdpEventEmitter(size_t rsize, size_t wsize) 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : in_fifo_(rsize), out_fifo_(wsize) { 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) UpdateStatus_Locked(); 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)Packet* UdpEventEmitter::ReadRXPacket_Locked() { 1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) Packet* packet = in_fifo_.ReadPacket(); 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) UpdateStatus_Locked(); 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return packet; 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void UdpEventEmitter::WriteRXPacket_Locked(Packet* packet) { 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) in_fifo_.WritePacket(packet); 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) UpdateStatus_Locked(); 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)Packet* UdpEventEmitter::ReadTXPacket_Locked() { 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) Packet* packet = out_fifo_.ReadPacket(); 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) UpdateStatus_Locked(); 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return packet; 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void UdpEventEmitter::WriteTXPacket_Locked(Packet* packet) { 3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) out_fifo_.WritePacket(packet); 3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) UpdateStatus_Locked(); 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace nacl_io 43