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