OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include "webrtc/base/asyncudpsocket.h" | 11 #include "webrtc/base/asyncudpsocket.h" |
| 12 #include "webrtc/base/checks.h" |
12 #include "webrtc/base/logging.h" | 13 #include "webrtc/base/logging.h" |
13 | 14 |
14 namespace rtc { | 15 namespace rtc { |
15 | 16 |
16 static const int BUF_SIZE = 64 * 1024; | 17 static const int BUF_SIZE = 64 * 1024; |
17 | 18 |
18 AsyncUDPSocket* AsyncUDPSocket::Create( | 19 AsyncUDPSocket* AsyncUDPSocket::Create( |
19 AsyncSocket* socket, | 20 AsyncSocket* socket, |
20 const SocketAddress& bind_address) { | 21 const SocketAddress& bind_address) { |
21 std::unique_ptr<AsyncSocket> owned_socket(socket); | 22 std::unique_ptr<AsyncSocket> owned_socket(socket); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 | 93 |
93 int AsyncUDPSocket::GetError() const { | 94 int AsyncUDPSocket::GetError() const { |
94 return socket_->GetError(); | 95 return socket_->GetError(); |
95 } | 96 } |
96 | 97 |
97 void AsyncUDPSocket::SetError(int error) { | 98 void AsyncUDPSocket::SetError(int error) { |
98 return socket_->SetError(error); | 99 return socket_->SetError(error); |
99 } | 100 } |
100 | 101 |
101 void AsyncUDPSocket::OnReadEvent(AsyncSocket* socket) { | 102 void AsyncUDPSocket::OnReadEvent(AsyncSocket* socket) { |
102 ASSERT(socket_.get() == socket); | 103 RTC_DCHECK(socket_.get() == socket); |
103 | 104 |
104 SocketAddress remote_addr; | 105 SocketAddress remote_addr; |
105 int64_t timestamp; | 106 int64_t timestamp; |
106 int len = socket_->RecvFrom(buf_, size_, &remote_addr, ×tamp); | 107 int len = socket_->RecvFrom(buf_, size_, &remote_addr, ×tamp); |
107 if (len < 0) { | 108 if (len < 0) { |
108 // An error here typically means we got an ICMP error in response to our | 109 // An error here typically means we got an ICMP error in response to our |
109 // send datagram, indicating the remote address was unreachable. | 110 // send datagram, indicating the remote address was unreachable. |
110 // When doing ICE, this kind of thing will often happen. | 111 // When doing ICE, this kind of thing will often happen. |
111 // TODO: Do something better like forwarding the error to the user. | 112 // TODO: Do something better like forwarding the error to the user. |
112 SocketAddress local_addr = socket_->GetLocalAddress(); | 113 SocketAddress local_addr = socket_->GetLocalAddress(); |
113 LOG(LS_INFO) << "AsyncUDPSocket[" << local_addr.ToSensitiveString() << "] " | 114 LOG(LS_INFO) << "AsyncUDPSocket[" << local_addr.ToSensitiveString() << "] " |
114 << "receive failed with error " << socket_->GetError(); | 115 << "receive failed with error " << socket_->GetError(); |
115 return; | 116 return; |
116 } | 117 } |
117 | 118 |
118 // TODO: Make sure that we got all of the packet. | 119 // TODO: Make sure that we got all of the packet. |
119 // If we did not, then we should resize our buffer to be large enough. | 120 // If we did not, then we should resize our buffer to be large enough. |
120 SignalReadPacket( | 121 SignalReadPacket( |
121 this, buf_, static_cast<size_t>(len), remote_addr, | 122 this, buf_, static_cast<size_t>(len), remote_addr, |
122 (timestamp > -1 ? PacketTime(timestamp, 0) : CreatePacketTime(0))); | 123 (timestamp > -1 ? PacketTime(timestamp, 0) : CreatePacketTime(0))); |
123 } | 124 } |
124 | 125 |
125 void AsyncUDPSocket::OnWriteEvent(AsyncSocket* socket) { | 126 void AsyncUDPSocket::OnWriteEvent(AsyncSocket* socket) { |
126 SignalReadyToSend(this); | 127 SignalReadyToSend(this); |
127 } | 128 } |
128 | 129 |
129 } // namespace rtc | 130 } // namespace rtc |
OLD | NEW |