1 // Copyright (c) 2012 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 #include "base/sync_socket.h"
10 #include <sys/types.h>
12 #include "base/logging.h"
16 const SyncSocket::Handle
SyncSocket::kInvalidHandle
= -1;
18 SyncSocket::SyncSocket() : handle_(kInvalidHandle
) {
21 SyncSocket::~SyncSocket() {
26 bool SyncSocket::CreatePair(SyncSocket
* socket_a
, SyncSocket
* socket_b
) {
31 SyncSocket::Handle
SyncSocket::UnwrapHandle(
32 const SyncSocket::TransitDescriptor
& descriptor
) {
33 // TODO(xians): Still unclear how NaCl uses SyncSocket.
34 // See http://crbug.com/409656
36 return SyncSocket::kInvalidHandle
;
39 bool SyncSocket::PrepareTransitDescriptor(
40 ProcessHandle peer_process_handle
,
41 SyncSocket::TransitDescriptor
* descriptor
) {
42 // TODO(xians): Still unclear how NaCl uses SyncSocket.
43 // See http://crbug.com/409656
48 bool SyncSocket::Close() {
49 if (handle_
!= kInvalidHandle
) {
50 if (close(handle_
) < 0)
51 DPLOG(ERROR
) << "close";
52 handle_
= kInvalidHandle
;
57 size_t SyncSocket::Send(const void* buffer
, size_t length
) {
58 const ssize_t bytes_written
= write(handle_
, buffer
, length
);
59 return bytes_written
> 0 ? bytes_written
: 0;
62 size_t SyncSocket::Receive(void* buffer
, size_t length
) {
63 const ssize_t bytes_read
= read(handle_
, buffer
, length
);
64 return bytes_read
> 0 ? bytes_read
: 0;
67 size_t SyncSocket::ReceiveWithTimeout(void* buffer
, size_t length
, TimeDelta
) {
72 size_t SyncSocket::Peek() {
77 CancelableSyncSocket::CancelableSyncSocket() {
80 CancelableSyncSocket::CancelableSyncSocket(Handle handle
)
81 : SyncSocket(handle
) {
84 size_t CancelableSyncSocket::Send(const void* buffer
, size_t length
) {
85 return SyncSocket::Send(buffer
, length
);
88 bool CancelableSyncSocket::Shutdown() {
89 return SyncSocket::Close();
93 bool CancelableSyncSocket::CreatePair(CancelableSyncSocket
* socket_a
,
94 CancelableSyncSocket
* socket_b
) {
95 return SyncSocket::CreatePair(socket_a
, socket_b
);