ozone: evdev: Sync caps lock LED state to evdev
[chromium-blink-merge.git] / native_client_sdk / src / libraries / nacl_io / socket / tcp_node.h
blob3d4a648d524e1ce84aa9acb255f888d21c397199
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.
5 #ifndef LIBRARIES_NACL_IO_SOCKET_TCP_NODE_H_
6 #define LIBRARIES_NACL_IO_SOCKET_TCP_NODE_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/node.h"
15 #include "nacl_io/socket/socket_node.h"
16 #include "nacl_io/socket/tcp_event_emitter.h"
18 namespace nacl_io {
20 class TcpNode : public SocketNode {
21 public:
22 explicit TcpNode(Filesystem* filesystem);
23 TcpNode(Filesystem* filesystem, PP_Resource socket);
25 protected:
26 virtual Error Init(int open_flags);
27 virtual void Destroy();
29 public:
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,
40 socklen_t* len);
41 virtual Error Bind(const struct sockaddr* addr, socklen_t len);
42 virtual Error Connect(const HandleAttr& attr,
43 const struct sockaddr* addr,
44 socklen_t len);
45 virtual Error GetSockOpt(int lvl, int optname, void* optval, socklen_t* len);
46 virtual Error Listen(int backlog);
47 virtual Error SetSockOpt(int lvl,
48 int optname,
49 const void* optval,
50 socklen_t len);
51 virtual Error Shutdown(int how);
53 virtual void SetError_Locked(int pp_error_num);
54 void ConnectDone_Locked();
55 void ConnectFailed_Locked();
57 protected:
58 Error SetNoDelay_Locked();
59 virtual Error Recv_Locked(void* buf,
60 size_t len,
61 PP_Resource* out_addr,
62 int* out_len);
64 virtual Error Send_Locked(const void* buf,
65 size_t len,
66 PP_Resource addr,
67 int* out_len);
69 ScopedTcpEventEmitter emitter_;
70 PP_Resource accepted_socket_;
71 bool tcp_nodelay_;
74 } // namespace nacl_io
76 #endif // PROVIDES_SOCKET_API
77 #endif // LIBRARIES_NACL_IO_SOCKET_TCP_NODE_H_