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 #ifndef LIBRARIES_NACL_IO_SOCKET_UDP_NODE_H_ 6 #define LIBRARIES_NACL_IO_SOCKET_UDP_NODE_H_ 7 8 #include "nacl_io/ossocket.h" 9 #ifdef PROVIDES_SOCKET_API 10 11 #include <ppapi/c/pp_resource.h> 12 #include <ppapi/c/ppb_udp_socket.h> 13 14 #include "nacl_io/socket/socket_node.h" 15 #include "nacl_io/socket/udp_event_emitter.h" 16 17 namespace nacl_io { 18 19 class UdpNode : public SocketNode { 20 public: 21 explicit UdpNode(Filesystem* filesystem); 22 23 protected: 24 virtual Error Init(int open_flags); 25 virtual void Destroy(); 26 27 public: 28 virtual UdpEventEmitter* GetEventEmitter(); 29 30 virtual void QueueInput(); 31 virtual void QueueOutput(); 32 33 virtual Error Bind(const struct sockaddr* addr, socklen_t len); 34 virtual Error Connect(const HandleAttr& attr, 35 const struct sockaddr* addr, 36 socklen_t len); 37 38 protected: 39 virtual Error Recv_Locked(void* buf, 40 size_t len, 41 PP_Resource* addr, 42 int* out_len); 43 44 virtual Error Send_Locked(const void* buf, 45 size_t len, 46 PP_Resource addr, 47 int* out_len); 48 49 ScopedUdpEventEmitter emitter_; 50 }; 51 52 } // namespace nacl_io 53 54 #endif // PROVIDES_SOCKET_API 55 #endif // LIBRARIES_NACL_IO_SOCKET_UDP_NODE_H_ 56