• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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