[go: nahoru, domu]

blob: 19a20becfa6886831d549ade80dad54f4e5a3d2e [file] [log] [blame]
bbudge@chromium.orgd0bac292012-02-29 16:10:451// 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.
4
5#include "base/sync_socket.h"
6
7#include <errno.h>
8#include <limits.h>
avi9b6f42932015-12-26 22:15:149#include <stddef.h>
bbudge@chromium.orgd0bac292012-02-29 16:10:4510#include <stdio.h>
11#include <sys/types.h>
12
bbudge@chromium.orgd0bac292012-02-29 16:10:4513#include "base/logging.h"
14
bbudge@chromium.orgd0bac292012-02-29 16:10:4515namespace base {
16
17const SyncSocket::Handle SyncSocket::kInvalidHandle = -1;
18
19SyncSocket::SyncSocket() : handle_(kInvalidHandle) {
bbudge@chromium.orgd0bac292012-02-29 16:10:4520}
21
22SyncSocket::~SyncSocket() {
dalecurtis@chromium.orgc124bdb2013-10-21 20:09:5223 Close();
bbudge@chromium.orgd0bac292012-02-29 16:10:4524}
25
26// static
27bool SyncSocket::CreatePair(SyncSocket* socket_a, SyncSocket* socket_b) {
28 return false;
29}
30
burnik3d670052014-09-08 06:58:2231// static
32SyncSocket::Handle SyncSocket::UnwrapHandle(
33 const SyncSocket::TransitDescriptor& descriptor) {
34 // TODO(xians): Still unclear how NaCl uses SyncSocket.
35 // See http://crbug.com/409656
36 NOTIMPLEMENTED();
37 return SyncSocket::kInvalidHandle;
38}
39
40bool SyncSocket::PrepareTransitDescriptor(
41 ProcessHandle peer_process_handle,
42 SyncSocket::TransitDescriptor* descriptor) {
43 // TODO(xians): Still unclear how NaCl uses SyncSocket.
44 // See http://crbug.com/409656
45 NOTIMPLEMENTED();
46 return false;
47}
48
bbudge@chromium.orgd0bac292012-02-29 16:10:4549bool SyncSocket::Close() {
bbudge@chromium.org5cfa5222012-07-14 14:06:0650 if (handle_ != kInvalidHandle) {
51 if (close(handle_) < 0)
52 DPLOG(ERROR) << "close";
dalecurtis@chromium.orgc124bdb2013-10-21 20:09:5253 handle_ = kInvalidHandle;
bbudge@chromium.org5cfa5222012-07-14 14:06:0654 }
55 return true;
bbudge@chromium.orgd0bac292012-02-29 16:10:4556}
57
58size_t SyncSocket::Send(const void* buffer, size_t length) {
dalecurtis@chromium.orgc124bdb2013-10-21 20:09:5259 const ssize_t bytes_written = write(handle_, buffer, length);
60 return bytes_written > 0 ? bytes_written : 0;
bbudge@chromium.orgd0bac292012-02-29 16:10:4561}
62
63size_t SyncSocket::Receive(void* buffer, size_t length) {
dalecurtis@chromium.orgc124bdb2013-10-21 20:09:5264 const ssize_t bytes_read = read(handle_, buffer, length);
65 return bytes_read > 0 ? bytes_read : 0;
bbudge@chromium.orgd0bac292012-02-29 16:10:4566}
67
dalecurtis@chromium.org62558f12013-10-19 22:13:1968size_t SyncSocket::ReceiveWithTimeout(void* buffer, size_t length, TimeDelta) {
69 NOTIMPLEMENTED();
70 return 0;
71}
72
bbudge@chromium.orgd0bac292012-02-29 16:10:4573size_t SyncSocket::Peek() {
dalecurtis@chromium.orgc124bdb2013-10-21 20:09:5274 NOTIMPLEMENTED();
75 return 0;
bbudge@chromium.orgd0bac292012-02-29 16:10:4576}
77
maxmorind4bcb112017-04-13 11:43:1378SyncSocket::Handle SyncSocket::Release() {
79 Handle r = handle_;
80 handle_ = kInvalidHandle;
81 return r;
82}
83
bbudge@chromium.org5cfa5222012-07-14 14:06:0684CancelableSyncSocket::CancelableSyncSocket() {
85}
86
bbudge@chromium.orgd0bac292012-02-29 16:10:4587CancelableSyncSocket::CancelableSyncSocket(Handle handle)
88 : SyncSocket(handle) {
89}
90
bbudge@chromium.org771fc8d2012-05-19 01:39:0591size_t CancelableSyncSocket::Send(const void* buffer, size_t length) {
dalecurtis@chromium.org38b575452013-10-23 03:03:1892 return SyncSocket::Send(buffer, length);
bbudge@chromium.org771fc8d2012-05-19 01:39:0593}
94
bbudge@chromium.orgd0bac292012-02-29 16:10:4595bool CancelableSyncSocket::Shutdown() {
dalecurtis@chromium.org38b575452013-10-23 03:03:1896 return SyncSocket::Close();
bbudge@chromium.orgd0bac292012-02-29 16:10:4597}
98
99// static
100bool CancelableSyncSocket::CreatePair(CancelableSyncSocket* socket_a,
101 CancelableSyncSocket* socket_b) {
102 return SyncSocket::CreatePair(socket_a, socket_b);
103}
104
105} // namespace base