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 17namespace nacl_io { 18 19class 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