[go: nahoru, domu]

blob: 1de65dc71b94e731e0413eca9cc6e8571aca4521 [file] [log] [blame]
Avi Drissmane4622aa2022-09-08 20:36:061// Copyright 2012 The Chromium Authors
bbudge@chromium.orgd0bac292012-02-29 16:10:452// 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>
Austin Sullivanedf168fd2024-01-17 21:37:2012#include <unistd.h>
bbudge@chromium.orgd0bac292012-02-29 16:10:4513
Austin Sullivanedf168fd2024-01-17 21:37:2014#include "base/containers/span.h"
Peter Boström6e2fd082024-01-23 01:17:5515#include "base/notimplemented.h"
bbudge@chromium.orgd0bac292012-02-29 16:10:4516
bbudge@chromium.orgd0bac292012-02-29 16:10:4517namespace base {
18
bbudge@chromium.orgd0bac292012-02-29 16:10:4519// static
20bool SyncSocket::CreatePair(SyncSocket* socket_a, SyncSocket* socket_b) {
21 return false;
22}
23
Robert Sesek6ab73b022020-02-13 16:42:3924void SyncSocket::Close() {
25 handle_.reset();
bbudge@chromium.orgd0bac292012-02-29 16:10:4526}
27
Austin Sullivanedf168fd2024-01-17 21:37:2028size_t SyncSocket::Send(span<const uint8_t> data) {
29 const ssize_t bytes_written = write(handle(), data.data(), data.size());
Peter Kasting2f61c8b2022-07-19 23:43:4630 return bytes_written > 0 ? static_cast<size_t>(bytes_written) : 0;
bbudge@chromium.orgd0bac292012-02-29 16:10:4531}
32
Austin Sullivanedf168fd2024-01-17 21:37:2033size_t SyncSocket::Send(const void* buffer, size_t length) {
34 return Send(make_span(static_cast<const uint8_t*>(buffer), length));
35}
36
37size_t SyncSocket::Receive(span<uint8_t> buffer) {
38 const ssize_t bytes_read = read(handle(), buffer.data(), buffer.size());
Peter Kasting2f61c8b2022-07-19 23:43:4639 return bytes_read > 0 ? static_cast<size_t>(bytes_read) : 0;
bbudge@chromium.orgd0bac292012-02-29 16:10:4540}
41
Austin Sullivanedf168fd2024-01-17 21:37:2042size_t SyncSocket::Receive(void* buffer, size_t length) {
43 return Receive(make_span(static_cast<uint8_t*>(buffer), length));
44}
45
46size_t SyncSocket::ReceiveWithTimeout(span<uint8_t> buffer, TimeDelta timeout) {
47 NOTIMPLEMENTED();
48 return 0;
49}
50
51size_t SyncSocket::ReceiveWithTimeout(void* buffer,
52 size_t length,
53 TimeDelta timeout) {
dalecurtis@chromium.org62558f12013-10-19 22:13:1954 NOTIMPLEMENTED();
55 return 0;
56}
57
bbudge@chromium.orgd0bac292012-02-29 16:10:4558size_t SyncSocket::Peek() {
dalecurtis@chromium.orgc124bdb2013-10-21 20:09:5259 NOTIMPLEMENTED();
60 return 0;
bbudge@chromium.orgd0bac292012-02-29 16:10:4561}
62
Robert Sesek6ab73b022020-02-13 16:42:3963bool SyncSocket::IsValid() const {
64 return handle_.is_valid();
65}
66
67SyncSocket::Handle SyncSocket::handle() const {
68 return handle_.get();
69}
70
maxmorind4bcb112017-04-13 11:43:1371SyncSocket::Handle SyncSocket::Release() {
Robert Sesek6ab73b022020-02-13 16:42:3972 return handle_.release();
bbudge@chromium.orgd0bac292012-02-29 16:10:4573}
74
Austin Sullivanedf168fd2024-01-17 21:37:2075size_t CancelableSyncSocket::Send(span<const uint8_t> data) {
76 return SyncSocket::Send(data);
77}
78
bbudge@chromium.org771fc8d2012-05-19 01:39:0579size_t CancelableSyncSocket::Send(const void* buffer, size_t length) {
Austin Sullivanedf168fd2024-01-17 21:37:2080 return Send(make_span(static_cast<const uint8_t*>(buffer), length));
bbudge@chromium.org771fc8d2012-05-19 01:39:0581}
82
bbudge@chromium.orgd0bac292012-02-29 16:10:4583bool CancelableSyncSocket::Shutdown() {
Robert Sesek6ab73b022020-02-13 16:42:3984 Close();
85 return true;
bbudge@chromium.orgd0bac292012-02-29 16:10:4586}
87
88// static
89bool CancelableSyncSocket::CreatePair(CancelableSyncSocket* socket_a,
90 CancelableSyncSocket* socket_b) {
91 return SyncSocket::CreatePair(socket_a, socket_b);
92}
93
94} // namespace base