blob: acd5415eb5ad1c03b44c0e8d6b08a82f210eb90b [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:26 +00001/*
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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#include "rtc_base/asyncsocket.h"
12#include "rtc_base/checks.h"
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000013
14namespace rtc {
15
Yves Gerey665174f2018-06-19 15:03:05 +020016AsyncSocket::AsyncSocket() {}
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000017
Yves Gerey665174f2018-06-19 15:03:05 +020018AsyncSocket::~AsyncSocket() {}
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000019
deadbeef37f5ecf2017-02-27 14:06:41 -080020AsyncSocketAdapter::AsyncSocketAdapter(AsyncSocket* socket) : socket_(nullptr) {
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000021 Attach(socket);
22}
23
24AsyncSocketAdapter::~AsyncSocketAdapter() {
25 delete socket_;
26}
27
28void AsyncSocketAdapter::Attach(AsyncSocket* socket) {
nisseede5da42017-01-12 05:15:36 -080029 RTC_DCHECK(!socket_);
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000030 socket_ = socket;
31 if (socket_) {
32 socket_->SignalConnectEvent.connect(this,
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000033 &AsyncSocketAdapter::OnConnectEvent);
34 socket_->SignalReadEvent.connect(this, &AsyncSocketAdapter::OnReadEvent);
35 socket_->SignalWriteEvent.connect(this, &AsyncSocketAdapter::OnWriteEvent);
36 socket_->SignalCloseEvent.connect(this, &AsyncSocketAdapter::OnCloseEvent);
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000037 }
38}
39
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000040SocketAddress AsyncSocketAdapter::GetLocalAddress() const {
41 return socket_->GetLocalAddress();
42}
43
44SocketAddress AsyncSocketAdapter::GetRemoteAddress() const {
45 return socket_->GetRemoteAddress();
46}
47
48int AsyncSocketAdapter::Bind(const SocketAddress& addr) {
49 return socket_->Bind(addr);
50}
51
52int AsyncSocketAdapter::Connect(const SocketAddress& addr) {
53 return socket_->Connect(addr);
54}
55
56int AsyncSocketAdapter::Send(const void* pv, size_t cb) {
57 return socket_->Send(pv, cb);
58}
59
60int AsyncSocketAdapter::SendTo(const void* pv,
61 size_t cb,
62 const SocketAddress& addr) {
63 return socket_->SendTo(pv, cb, addr);
64}
65
Stefan Holmer9131efd2016-05-23 18:19:26 +020066int AsyncSocketAdapter::Recv(void* pv, size_t cb, int64_t* timestamp) {
67 return socket_->Recv(pv, cb, timestamp);
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000068}
69
Stefan Holmer9131efd2016-05-23 18:19:26 +020070int AsyncSocketAdapter::RecvFrom(void* pv,
71 size_t cb,
72 SocketAddress* paddr,
73 int64_t* timestamp) {
74 return socket_->RecvFrom(pv, cb, paddr, timestamp);
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000075}
76
77int AsyncSocketAdapter::Listen(int backlog) {
78 return socket_->Listen(backlog);
79}
80
81AsyncSocket* AsyncSocketAdapter::Accept(SocketAddress* paddr) {
82 return socket_->Accept(paddr);
83}
84
85int AsyncSocketAdapter::Close() {
86 return socket_->Close();
87}
88
89int AsyncSocketAdapter::GetError() const {
90 return socket_->GetError();
91}
92
93void AsyncSocketAdapter::SetError(int error) {
94 return socket_->SetError(error);
95}
96
97AsyncSocket::ConnState AsyncSocketAdapter::GetState() const {
98 return socket_->GetState();
99}
100
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +0000101int AsyncSocketAdapter::GetOption(Option opt, int* value) {
102 return socket_->GetOption(opt, value);
103}
104
105int AsyncSocketAdapter::SetOption(Option opt, int value) {
106 return socket_->SetOption(opt, value);
107}
108
109void AsyncSocketAdapter::OnConnectEvent(AsyncSocket* socket) {
110 SignalConnectEvent(this);
111}
112
113void AsyncSocketAdapter::OnReadEvent(AsyncSocket* socket) {
114 SignalReadEvent(this);
115}
116
117void AsyncSocketAdapter::OnWriteEvent(AsyncSocket* socket) {
118 SignalWriteEvent(this);
119}
120
121void AsyncSocketAdapter::OnCloseEvent(AsyncSocket* socket, int err) {
122 SignalCloseEvent(this, err);
123}
124
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000125} // namespace rtc