1 // Copyright (c) 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.
5 #ifndef LIBRARIES_NACL_IO_MOUNT_NODE_TCP_H_
6 #define LIBRARIES_NACL_IO_MOUNT_NODE_TCP_H_
8 #include "nacl_io/ossocket.h"
9 #ifdef PROVIDES_SOCKET_API
11 #include <ppapi/c/pp_resource.h>
12 #include <ppapi/c/ppb_tcp_socket.h>
14 #include "nacl_io/event_emitter_tcp.h"
15 #include "nacl_io/mount_node.h"
16 #include "nacl_io/mount_node_socket.h"
20 class MountNodeTCP : public MountNodeSocket {
22 explicit MountNodeTCP(Mount* mount);
23 MountNodeTCP(Mount* mount, PP_Resource socket);
26 virtual Error Init(int open_flags);
27 virtual void Destroy();
30 virtual EventEmitter* GetEventEmitter();
32 virtual void QueueAccept();
33 virtual void QueueConnect();
34 virtual void QueueInput();
35 virtual void QueueOutput();
37 virtual Error Accept(const HandleAttr& attr,
38 PP_Resource* out_sock,
39 struct sockaddr* addr,
41 virtual Error Bind(const struct sockaddr* addr, socklen_t len);
42 virtual Error Listen(int backlog);
43 virtual Error Connect(const HandleAttr& attr,
44 const struct sockaddr* addr,
46 virtual Error Shutdown(int how);
48 virtual void SetError_Locked(int pp_error_num);
49 void ConnectDone_Locked();
50 void ConnectFailed_Locked();
53 virtual Error Recv_Locked(void* buf,
55 PP_Resource* out_addr,
58 virtual Error Send_Locked(const void* buf,
63 ScopedEventEmitterTCP emitter_;
64 PP_Resource accepted_socket_;
68 } // namespace nacl_io
70 #endif // PROVIDES_SOCKET_API
71 #endif // LIBRARIES_NACL_IO_MOUNT_NODE_TCP_H_