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 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 } | 95 } |
96 | 96 |
97 void AsyncUDPSocket::SetError(int error) { | 97 void AsyncUDPSocket::SetError(int error) { |
98 return socket_->SetError(error); | 98 return socket_->SetError(error); |
99 } | 99 } |
100 | 100 |
101 void AsyncUDPSocket::OnReadEvent(AsyncSocket* socket) { | 101 void AsyncUDPSocket::OnReadEvent(AsyncSocket* socket) { |
102 ASSERT(socket_.get() == socket); | 102 ASSERT(socket_.get() == socket); |
103 | 103 |
104 SocketAddress remote_addr; | 104 SocketAddress remote_addr; |
105 int len = socket_->RecvFrom(buf_, size_, &remote_addr); | 105 int64_t timestamp; |
| 106 int len = socket_->RecvFrom(buf_, size_, &remote_addr, ×tamp); |
106 if (len < 0) { | 107 if (len < 0) { |
107 // An error here typically means we got an ICMP error in response to our | 108 // An error here typically means we got an ICMP error in response to our |
108 // send datagram, indicating the remote address was unreachable. | 109 // send datagram, indicating the remote address was unreachable. |
109 // When doing ICE, this kind of thing will often happen. | 110 // When doing ICE, this kind of thing will often happen. |
110 // TODO: Do something better like forwarding the error to the user. | 111 // TODO: Do something better like forwarding the error to the user. |
111 SocketAddress local_addr = socket_->GetLocalAddress(); | 112 SocketAddress local_addr = socket_->GetLocalAddress(); |
112 LOG(LS_INFO) << "AsyncUDPSocket[" << local_addr.ToSensitiveString() << "] " | 113 LOG(LS_INFO) << "AsyncUDPSocket[" << local_addr.ToSensitiveString() << "] " |
113 << "receive failed with error " << socket_->GetError(); | 114 << "receive failed with error " << socket_->GetError(); |
114 return; | 115 return; |
115 } | 116 } |
116 | 117 |
117 // TODO: Make sure that we got all of the packet. | 118 // TODO: Make sure that we got all of the packet. |
118 // If we did not, then we should resize our buffer to be large enough. | 119 // If we did not, then we should resize our buffer to be large enough. |
119 SignalReadPacket(this, buf_, static_cast<size_t>(len), remote_addr, | 120 SignalReadPacket( |
120 CreatePacketTime(0)); | 121 this, buf_, static_cast<size_t>(len), remote_addr, |
| 122 (timestamp > -1 ? PacketTime(timestamp, 0) : CreatePacketTime(0))); |
121 } | 123 } |
122 | 124 |
123 void AsyncUDPSocket::OnWriteEvent(AsyncSocket* socket) { | 125 void AsyncUDPSocket::OnWriteEvent(AsyncSocket* socket) { |
124 SignalReadyToSend(this); | 126 SignalReadyToSend(this); |
125 } | 127 } |
126 | 128 |
127 } // namespace rtc | 129 } // namespace rtc |
OLD | NEW |