xref: /aosp_15_r20/external/webrtc/rtc_base/async_socket.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1 /*
2  *  Copyright 2010 The WebRTC Project Authors. All rights reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "rtc_base/async_socket.h"
12 
13 #include "absl/memory/memory.h"
14 #include "rtc_base/checks.h"
15 
16 namespace rtc {
17 
AsyncSocketAdapter(Socket * socket)18 AsyncSocketAdapter::AsyncSocketAdapter(Socket* socket)
19     : socket_(absl::WrapUnique(socket)) {
20   RTC_DCHECK(socket_);
21   socket_->SignalConnectEvent.connect(this,
22                                       &AsyncSocketAdapter::OnConnectEvent);
23   socket_->SignalReadEvent.connect(this, &AsyncSocketAdapter::OnReadEvent);
24   socket_->SignalWriteEvent.connect(this, &AsyncSocketAdapter::OnWriteEvent);
25   socket_->SignalCloseEvent.connect(this, &AsyncSocketAdapter::OnCloseEvent);
26 }
27 
GetLocalAddress() const28 SocketAddress AsyncSocketAdapter::GetLocalAddress() const {
29   return socket_->GetLocalAddress();
30 }
31 
GetRemoteAddress() const32 SocketAddress AsyncSocketAdapter::GetRemoteAddress() const {
33   return socket_->GetRemoteAddress();
34 }
35 
Bind(const SocketAddress & addr)36 int AsyncSocketAdapter::Bind(const SocketAddress& addr) {
37   return socket_->Bind(addr);
38 }
39 
Connect(const SocketAddress & addr)40 int AsyncSocketAdapter::Connect(const SocketAddress& addr) {
41   return socket_->Connect(addr);
42 }
43 
Send(const void * pv,size_t cb)44 int AsyncSocketAdapter::Send(const void* pv, size_t cb) {
45   return socket_->Send(pv, cb);
46 }
47 
SendTo(const void * pv,size_t cb,const SocketAddress & addr)48 int AsyncSocketAdapter::SendTo(const void* pv,
49                                size_t cb,
50                                const SocketAddress& addr) {
51   return socket_->SendTo(pv, cb, addr);
52 }
53 
Recv(void * pv,size_t cb,int64_t * timestamp)54 int AsyncSocketAdapter::Recv(void* pv, size_t cb, int64_t* timestamp) {
55   return socket_->Recv(pv, cb, timestamp);
56 }
57 
RecvFrom(void * pv,size_t cb,SocketAddress * paddr,int64_t * timestamp)58 int AsyncSocketAdapter::RecvFrom(void* pv,
59                                  size_t cb,
60                                  SocketAddress* paddr,
61                                  int64_t* timestamp) {
62   return socket_->RecvFrom(pv, cb, paddr, timestamp);
63 }
64 
Listen(int backlog)65 int AsyncSocketAdapter::Listen(int backlog) {
66   return socket_->Listen(backlog);
67 }
68 
Accept(SocketAddress * paddr)69 Socket* AsyncSocketAdapter::Accept(SocketAddress* paddr) {
70   return socket_->Accept(paddr);
71 }
72 
Close()73 int AsyncSocketAdapter::Close() {
74   return socket_->Close();
75 }
76 
GetError() const77 int AsyncSocketAdapter::GetError() const {
78   return socket_->GetError();
79 }
80 
SetError(int error)81 void AsyncSocketAdapter::SetError(int error) {
82   return socket_->SetError(error);
83 }
84 
GetState() const85 Socket::ConnState AsyncSocketAdapter::GetState() const {
86   return socket_->GetState();
87 }
88 
GetOption(Option opt,int * value)89 int AsyncSocketAdapter::GetOption(Option opt, int* value) {
90   return socket_->GetOption(opt, value);
91 }
92 
SetOption(Option opt,int value)93 int AsyncSocketAdapter::SetOption(Option opt, int value) {
94   return socket_->SetOption(opt, value);
95 }
96 
OnConnectEvent(Socket * socket)97 void AsyncSocketAdapter::OnConnectEvent(Socket* socket) {
98   SignalConnectEvent(this);
99 }
100 
OnReadEvent(Socket * socket)101 void AsyncSocketAdapter::OnReadEvent(Socket* socket) {
102   SignalReadEvent(this);
103 }
104 
OnWriteEvent(Socket * socket)105 void AsyncSocketAdapter::OnWriteEvent(Socket* socket) {
106   SignalWriteEvent(this);
107 }
108 
OnCloseEvent(Socket * socket,int err)109 void AsyncSocketAdapter::OnCloseEvent(Socket* socket, int err) {
110   SignalCloseEvent(this, err);
111 }
112 
113 }  // namespace rtc
114