blob: 90e2c2af9e3a7a25187b6d9669e49984ea4ed9c3 [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:261/*
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
Steve Anton10542f22019-01-11 17:11:0011#include "rtc_base/async_socket.h"
Jonas Olssona4d87372019-07-05 17:08:3312
Mirko Bonadei92ea95e2017-09-15 04:47:3113#include "rtc_base/checks.h"
henrike@webrtc.orgf0488722014-05-13 18:00:2614
15namespace rtc {
16
Yves Gerey665174f2018-06-19 13:03:0517AsyncSocket::AsyncSocket() {}
henrike@webrtc.orgf0488722014-05-13 18:00:2618
Yves Gerey665174f2018-06-19 13:03:0519AsyncSocket::~AsyncSocket() {}
henrike@webrtc.orgf0488722014-05-13 18:00:2620
deadbeef37f5ecf2017-02-27 22:06:4121AsyncSocketAdapter::AsyncSocketAdapter(AsyncSocket* socket) : socket_(nullptr) {
henrike@webrtc.orgf0488722014-05-13 18:00:2622 Attach(socket);
23}
24
25AsyncSocketAdapter::~AsyncSocketAdapter() {
26 delete socket_;
27}
28
29void AsyncSocketAdapter::Attach(AsyncSocket* socket) {
nisseede5da42017-01-12 13:15:3630 RTC_DCHECK(!socket_);
henrike@webrtc.orgf0488722014-05-13 18:00:2631 socket_ = socket;
32 if (socket_) {
33 socket_->SignalConnectEvent.connect(this,
kwiberg@webrtc.org67186fe2015-03-09 22:21:5334 &AsyncSocketAdapter::OnConnectEvent);
35 socket_->SignalReadEvent.connect(this, &AsyncSocketAdapter::OnReadEvent);
36 socket_->SignalWriteEvent.connect(this, &AsyncSocketAdapter::OnWriteEvent);
37 socket_->SignalCloseEvent.connect(this, &AsyncSocketAdapter::OnCloseEvent);
henrike@webrtc.orgf0488722014-05-13 18:00:2638 }
39}
40
kwiberg@webrtc.org67186fe2015-03-09 22:21:5341SocketAddress AsyncSocketAdapter::GetLocalAddress() const {
42 return socket_->GetLocalAddress();
43}
44
45SocketAddress AsyncSocketAdapter::GetRemoteAddress() const {
46 return socket_->GetRemoteAddress();
47}
48
49int AsyncSocketAdapter::Bind(const SocketAddress& addr) {
50 return socket_->Bind(addr);
51}
52
53int AsyncSocketAdapter::Connect(const SocketAddress& addr) {
54 return socket_->Connect(addr);
55}
56
57int AsyncSocketAdapter::Send(const void* pv, size_t cb) {
58 return socket_->Send(pv, cb);
59}
60
61int AsyncSocketAdapter::SendTo(const void* pv,
62 size_t cb,
63 const SocketAddress& addr) {
64 return socket_->SendTo(pv, cb, addr);
65}
66
Stefan Holmer9131efd2016-05-23 16:19:2667int AsyncSocketAdapter::Recv(void* pv, size_t cb, int64_t* timestamp) {
68 return socket_->Recv(pv, cb, timestamp);
kwiberg@webrtc.org67186fe2015-03-09 22:21:5369}
70
Stefan Holmer9131efd2016-05-23 16:19:2671int AsyncSocketAdapter::RecvFrom(void* pv,
72 size_t cb,
73 SocketAddress* paddr,
74 int64_t* timestamp) {
75 return socket_->RecvFrom(pv, cb, paddr, timestamp);
kwiberg@webrtc.org67186fe2015-03-09 22:21:5376}
77
78int AsyncSocketAdapter::Listen(int backlog) {
79 return socket_->Listen(backlog);
80}
81
82AsyncSocket* AsyncSocketAdapter::Accept(SocketAddress* paddr) {
83 return socket_->Accept(paddr);
84}
85
86int AsyncSocketAdapter::Close() {
87 return socket_->Close();
88}
89
90int AsyncSocketAdapter::GetError() const {
91 return socket_->GetError();
92}
93
94void AsyncSocketAdapter::SetError(int error) {
95 return socket_->SetError(error);
96}
97
98AsyncSocket::ConnState AsyncSocketAdapter::GetState() const {
99 return socket_->GetState();
100}
101
kwiberg@webrtc.org67186fe2015-03-09 22:21:53102int AsyncSocketAdapter::GetOption(Option opt, int* value) {
103 return socket_->GetOption(opt, value);
104}
105
106int AsyncSocketAdapter::SetOption(Option opt, int value) {
107 return socket_->SetOption(opt, value);
108}
109
110void AsyncSocketAdapter::OnConnectEvent(AsyncSocket* socket) {
111 SignalConnectEvent(this);
112}
113
114void AsyncSocketAdapter::OnReadEvent(AsyncSocket* socket) {
115 SignalReadEvent(this);
116}
117
118void AsyncSocketAdapter::OnWriteEvent(AsyncSocket* socket) {
119 SignalWriteEvent(this);
120}
121
122void AsyncSocketAdapter::OnCloseEvent(AsyncSocket* socket, int err) {
123 SignalCloseEvent(this, err);
124}
125
henrike@webrtc.orgf0488722014-05-13 18:00:26126} // namespace rtc