Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: native_client_sdk/src/libraries/nacl_io/mount_node_socket.h

Issue 23498015: [NaCl SDK] Support non blocking TCP/UDP (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
};

Powered by Google App Engine
This is Rietveld 408576698