15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef LIBRARIES_NACL_IO_SOCKET_UDP_NODE_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define LIBRARIES_NACL_IO_SOCKET_UDP_NODE_H_ 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "nacl_io/ossocket.h" 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#ifdef PROVIDES_SOCKET_API 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include <ppapi/c/pp_resource.h> 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include <ppapi/c/ppb_udp_socket.h> 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "nacl_io/socket/socket_node.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "nacl_io/socket/udp_event_emitter.h" 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace nacl_io { 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class UdpNode : public SocketNode { 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public: 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) explicit UdpNode(Filesystem* filesystem); 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) protected: 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual Error Init(int open_flags); 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void Destroy(); 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public: 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual UdpEventEmitter* GetEventEmitter(); 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void QueueInput(); 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void QueueOutput(); 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual Error Bind(const struct sockaddr* addr, socklen_t len); 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual Error Connect(const HandleAttr& attr, 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const struct sockaddr* addr, 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) socklen_t len); 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) protected: 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual Error Recv_Locked(void* buf, 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) size_t len, 4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_Resource* addr, 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int* out_len); 4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual Error Send_Locked(const void* buf, 4568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) size_t len, 4668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_Resource addr, 4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int* out_len); 4868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ScopedUdpEventEmitter emitter_; 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace nacl_io 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif // PROVIDES_SOCKET_API 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // LIBRARIES_NACL_IO_SOCKET_UDP_NODE_H_ 56