| Index: native_client_sdk/src/libraries/nacl_io/mount_node_socket.h
|
| diff --git a/native_client_sdk/src/libraries/nacl_io/mount_node_socket.h b/native_client_sdk/src/libraries/nacl_io/mount_node_socket.h
|
| index a133c19f4fd03c6dee64dae6b225c17965ea1751..5cd4ba21b4f4818b9f54506b0a246974af656a4d 100644
|
| --- a/native_client_sdk/src/libraries/nacl_io/mount_node_socket.h
|
| +++ b/native_client_sdk/src/libraries/nacl_io/mount_node_socket.h
|
| @@ -13,6 +13,8 @@
|
| #include <ppapi/c/ppb_net_address.h>
|
|
|
| #include "nacl_io/mount.h"
|
| +#include "nacl_io/mount_node.h"
|
| +#include "nacl_io/mount_node_stream.h"
|
| #include "nacl_io/pepper_interface.h"
|
|
|
| namespace nacl_io {
|
| @@ -21,9 +23,9 @@ namespace nacl_io {
|
| * should be looping on Send/Recv size. */
|
| static const size_t MAX_SOCK_TRANSFER = 65536;
|
|
|
| -class MountSocket;
|
| +class MountStream;
|
|
|
| -class MountNodeSocket : public MountNode {
|
| +class MountNodeSocket : public MountNodeStream {
|
| public:
|
| explicit MountNodeSocket(Mount* mount);
|
|
|
| @@ -32,8 +34,6 @@ class MountNodeSocket : public MountNode {
|
| virtual Error Init(int flags) = 0;
|
|
|
| public:
|
| - virtual uint32_t GetEventStatus();
|
| -
|
| // Normal read/write operations on a file (recv/send).
|
| virtual Error Read(size_t offs, void* buf, size_t count, int* out_bytes);
|
| virtual Error Write(size_t offs,
|
| @@ -57,7 +57,7 @@ class MountNodeSocket : public MountNode {
|
| size_t offset,
|
| void** out_addr);
|
|
|
| - // Normal Functions.
|
| + // Socket Functions.
|
| virtual Error Bind(const struct sockaddr* addr, socklen_t len);
|
| virtual Error Connect(const struct sockaddr* addr, socklen_t len);
|
| virtual Error Recv(void* buf, size_t len, int flags, int* out_len);
|
| @@ -79,8 +79,44 @@ class MountNodeSocket : public MountNode {
|
| virtual Error GetPeerName(struct sockaddr* addr, socklen_t* len);
|
| virtual Error GetSockName(struct sockaddr* addr, socklen_t* len);
|
|
|
| + PP_Resource socket_resource() { return socket_resource_; }
|
| +
|
| + // Updates socket's state, recording last error.
|
| + void SetError_Locked(int pp_error_num);
|
| +
|
| protected:
|
| - NetAddressInterface* NetAddress();
|
| +
|
| + // Wraps common error checks, timeouts, work pump for send.
|
| + Error SendHelper(const void* buf,
|
| + size_t len,
|
| + int flags,
|
| + PP_Resource addr,
|
| + int* out_len);
|
| +
|
| + // Wraps common error checks, timeouts, work pump for recv.
|
| + Error RecvHelper(void* buf,
|
| + size_t len,
|
| + int flags,
|
| + PP_Resource* addr,
|
| + int* out_len);
|
| +
|
| +
|
| + // Per socket type send and recv
|
| + virtual Error Recv_Locked(void* buffer,
|
| + size_t len,
|
| + PP_Resource* out_addr,
|
| + int* out_len) = 0;
|
| +
|
| + virtual Error Send_Locked(const void* buffer,
|
| + size_t len,
|
| + PP_Resource addr,
|
| + int* out_len) = 0;
|
| +
|
| +
|
| + NetAddressInterface* NetInterface();
|
| + TCPSocketInterface* TCPInterface();
|
| + UDPSocketInterface* UDPInterface();
|
| +
|
| PP_Resource SockAddrToResource(const struct sockaddr* addr, socklen_t len);
|
| socklen_t ResourceToSockAddr(PP_Resource addr,
|
| socklen_t len,
|
| @@ -92,9 +128,11 @@ class MountNodeSocket : public MountNode {
|
| PP_Resource socket_resource_;
|
| PP_Resource local_addr_;
|
| PP_Resource remote_addr_;
|
| + uint32_t socket_flags_;
|
| + int last_errno_;
|
|
|
| friend class KernelProxy;
|
| - friend class MountSocket;
|
| + friend class MountStream;
|
| };
|
|
|
|
|
|
|