diff options
author | dalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-21 20:09:52 +0000 |
---|---|---|
committer | dalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-21 20:09:52 +0000 |
commit | c124bdbd7e9d0420046984828cc121a209d44da5 (patch) | |
tree | 978d9ba8620492a9e69b227e6f9683b10837234b /base/sync_socket_nacl.cc | |
parent | 98501238ffde5025cee7025eec17e8e1b57b13fe (diff) | |
download | chromium_src-c124bdbd7e9d0420046984828cc121a209d44da5.zip chromium_src-c124bdbd7e9d0420046984828cc121a209d44da5.tar.gz chromium_src-c124bdbd7e9d0420046984828cc121a209d44da5.tar.bz2 |
Add write() impl to SyncSocket for NaCl. Fix shutdown leaks.
Necessary for https://codereview.chromium.org/22886005/
Also fixes return codes from size_t methods to avoid signed
values from being returned.
BUG=289124
TEST=build nacl, audio still works.
Review URL: https://codereview.chromium.org/27029009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229895 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/sync_socket_nacl.cc')
-rw-r--r-- | base/sync_socket_nacl.cc | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/base/sync_socket_nacl.cc b/base/sync_socket_nacl.cc index db15035..ebe4c9af 100644 --- a/base/sync_socket_nacl.cc +++ b/base/sync_socket_nacl.cc @@ -11,7 +11,6 @@ #include "base/logging.h" - namespace base { const SyncSocket::Handle SyncSocket::kInvalidHandle = -1; @@ -20,6 +19,7 @@ SyncSocket::SyncSocket() : handle_(kInvalidHandle) { } SyncSocket::~SyncSocket() { + Close(); } // static @@ -31,18 +31,19 @@ bool SyncSocket::Close() { if (handle_ != kInvalidHandle) { if (close(handle_) < 0) DPLOG(ERROR) << "close"; - handle_ = -1; + handle_ = kInvalidHandle; } return true; } size_t SyncSocket::Send(const void* buffer, size_t length) { - // Not implemented since it's not needed by any client code yet. - return -1; + const ssize_t bytes_written = write(handle_, buffer, length); + return bytes_written > 0 ? bytes_written : 0; } size_t SyncSocket::Receive(void* buffer, size_t length) { - return read(handle_, buffer, length); + const ssize_t bytes_read = read(handle_, buffer, length); + return bytes_read > 0 ? bytes_read : 0; } size_t SyncSocket::ReceiveWithTimeout(void* buffer, size_t length, TimeDelta) { @@ -51,7 +52,8 @@ size_t SyncSocket::ReceiveWithTimeout(void* buffer, size_t length, TimeDelta) { } size_t SyncSocket::Peek() { - return -1; + NOTIMPLEMENTED(); + return 0; } CancelableSyncSocket::CancelableSyncSocket() { @@ -62,11 +64,11 @@ CancelableSyncSocket::CancelableSyncSocket(Handle handle) } size_t CancelableSyncSocket::Send(const void* buffer, size_t length) { - return -1; + return Send(buffer, length); } bool CancelableSyncSocket::Shutdown() { - return false; + return Close(); } // static |