Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1065)

Side by Side Diff: webrtc/p2p/base/turnport.cc

Issue 1793553002: Using 64-bit timestamp in webrtc/p2p (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/p2p/base/turnport.h ('k') | webrtc/p2p/base/turnport_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2012 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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 138
139 TurnPort* port() { return port_; } 139 TurnPort* port() { return port_; }
140 140
141 int channel_id() const { return channel_id_; } 141 int channel_id() const { return channel_id_; }
142 // For testing only. 142 // For testing only.
143 void set_channel_id(int channel_id) { channel_id_ = channel_id; } 143 void set_channel_id(int channel_id) { channel_id_ = channel_id; }
144 144
145 const rtc::SocketAddress& address() const { return ext_addr_; } 145 const rtc::SocketAddress& address() const { return ext_addr_; }
146 BindState state() const { return state_; } 146 BindState state() const { return state_; }
147 147
148 uint32_t destruction_timestamp() { return destruction_timestamp_; } 148 int64_t destruction_timestamp() { return destruction_timestamp_; }
149 void set_destruction_timestamp(uint32_t destruction_timestamp) { 149 void set_destruction_timestamp(int64_t destruction_timestamp) {
150 destruction_timestamp_ = destruction_timestamp; 150 destruction_timestamp_ = destruction_timestamp;
151 } 151 }
152 152
153 // Helper methods to send permission and channel bind requests. 153 // Helper methods to send permission and channel bind requests.
154 void SendCreatePermissionRequest(int delay); 154 void SendCreatePermissionRequest(int delay);
155 void SendChannelBindRequest(int delay); 155 void SendChannelBindRequest(int delay);
156 // Sends a packet to the given destination address. 156 // Sends a packet to the given destination address.
157 // This will wrap the packet in STUN if necessary. 157 // This will wrap the packet in STUN if necessary.
158 int Send(const void* data, size_t size, bool payload, 158 int Send(const void* data, size_t size, bool payload,
159 const rtc::PacketOptions& options); 159 const rtc::PacketOptions& options);
160 160
161 void OnCreatePermissionSuccess(); 161 void OnCreatePermissionSuccess();
162 void OnCreatePermissionError(StunMessage* response, int code); 162 void OnCreatePermissionError(StunMessage* response, int code);
163 void OnCreatePermissionTimeout(); 163 void OnCreatePermissionTimeout();
164 void OnChannelBindSuccess(); 164 void OnChannelBindSuccess();
165 void OnChannelBindError(StunMessage* response, int code); 165 void OnChannelBindError(StunMessage* response, int code);
166 void OnChannelBindTimeout(); 166 void OnChannelBindTimeout();
167 // Signal sent when TurnEntry is destroyed. 167 // Signal sent when TurnEntry is destroyed.
168 sigslot::signal1<TurnEntry*> SignalDestroyed; 168 sigslot::signal1<TurnEntry*> SignalDestroyed;
169 169
170 private: 170 private:
171 TurnPort* port_; 171 TurnPort* port_;
172 int channel_id_; 172 int channel_id_;
173 rtc::SocketAddress ext_addr_; 173 rtc::SocketAddress ext_addr_;
174 BindState state_; 174 BindState state_;
175 // A non-zero value indicates that this entry is scheduled to be destroyed. 175 // A non-zero value indicates that this entry is scheduled to be destroyed.
176 // It is also used as an ID of the event scheduling. When the destruction 176 // It is also used as an ID of the event scheduling. When the destruction
177 // event actually fires, the TurnEntry will be destroyed only if the 177 // event actually fires, the TurnEntry will be destroyed only if the
178 // timestamp here matches the one in the firing event. 178 // timestamp here matches the one in the firing event.
179 uint32_t destruction_timestamp_ = 0; 179 int64_t destruction_timestamp_ = 0;
180 }; 180 };
181 181
182 TurnPort::TurnPort(rtc::Thread* thread, 182 TurnPort::TurnPort(rtc::Thread* thread,
183 rtc::PacketSocketFactory* factory, 183 rtc::PacketSocketFactory* factory,
184 rtc::Network* network, 184 rtc::Network* network,
185 rtc::AsyncPacketSocket* socket, 185 rtc::AsyncPacketSocket* socket,
186 const std::string& username, 186 const std::string& username,
187 const std::string& password, 187 const std::string& password,
188 const ProtocolAddress& server_address, 188 const ProtocolAddress& server_address,
189 const RelayCredentials& credentials, 189 const RelayCredentials& credentials,
(...skipping 793 matching lines...) Expand 10 before | Expand all | Expand 10 after
983 } 983 }
984 } 984 }
985 985
986 void TurnPort::DestroyEntry(TurnEntry* entry) { 986 void TurnPort::DestroyEntry(TurnEntry* entry) {
987 ASSERT(entry != NULL); 987 ASSERT(entry != NULL);
988 entry->SignalDestroyed(entry); 988 entry->SignalDestroyed(entry);
989 entries_.remove(entry); 989 entries_.remove(entry);
990 delete entry; 990 delete entry;
991 } 991 }
992 992
993 void TurnPort::DestroyEntryIfNotCancelled(TurnEntry* entry, 993 void TurnPort::DestroyEntryIfNotCancelled(TurnEntry* entry, int64_t timestamp) {
994 uint32_t timestamp) {
995 if (!EntryExists(entry)) { 994 if (!EntryExists(entry)) {
996 return; 995 return;
997 } 996 }
998 bool cancelled = timestamp != entry->destruction_timestamp(); 997 bool cancelled = timestamp != entry->destruction_timestamp();
999 if (!cancelled) { 998 if (!cancelled) {
1000 DestroyEntry(entry); 999 DestroyEntry(entry);
1001 } 1000 }
1002 } 1001 }
1003 1002
1004 void TurnPort::OnConnectionDestroyed(Connection* conn) { 1003 void TurnPort::OnConnectionDestroyed(Connection* conn) {
1005 // Schedule an event to destroy TurnEntry for the connection, which is 1004 // Schedule an event to destroy TurnEntry for the connection, which is
1006 // already destroyed. 1005 // already destroyed.
1007 const rtc::SocketAddress& remote_address = conn->remote_candidate().address(); 1006 const rtc::SocketAddress& remote_address = conn->remote_candidate().address();
1008 TurnEntry* entry = FindEntry(remote_address); 1007 TurnEntry* entry = FindEntry(remote_address);
1009 ASSERT(entry != NULL); 1008 ASSERT(entry != NULL);
1010 ScheduleEntryDestruction(entry); 1009 ScheduleEntryDestruction(entry);
1011 } 1010 }
1012 1011
1013 void TurnPort::ScheduleEntryDestruction(TurnEntry* entry) { 1012 void TurnPort::ScheduleEntryDestruction(TurnEntry* entry) {
1014 ASSERT(entry->destruction_timestamp() == 0); 1013 ASSERT(entry->destruction_timestamp() == 0);
1015 uint32_t timestamp = rtc::Time(); 1014 int64_t timestamp = rtc::Time64();
1016 entry->set_destruction_timestamp(timestamp); 1015 entry->set_destruction_timestamp(timestamp);
1017 invoker_.AsyncInvokeDelayed<void>( 1016 invoker_.AsyncInvokeDelayed<void>(
1018 thread(), 1017 thread(),
1019 rtc::Bind(&TurnPort::DestroyEntryIfNotCancelled, this, entry, timestamp), 1018 rtc::Bind(&TurnPort::DestroyEntryIfNotCancelled, this, entry, timestamp),
1020 TURN_PERMISSION_TIMEOUT); 1019 TURN_PERMISSION_TIMEOUT);
1021 } 1020 }
1022 1021
1023 void TurnPort::CancelEntryDestruction(TurnEntry* entry) { 1022 void TurnPort::CancelEntryDestruction(TurnEntry* entry) {
1024 ASSERT(entry->destruction_timestamp() != 0); 1023 ASSERT(entry->destruction_timestamp() != 0);
1025 entry->set_destruction_timestamp(0); 1024 entry->set_destruction_timestamp(0);
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
1513 } else { 1512 } else {
1514 state_ = STATE_UNBOUND; 1513 state_ = STATE_UNBOUND;
1515 port_->DestroyConnection(ext_addr_); 1514 port_->DestroyConnection(ext_addr_);
1516 } 1515 }
1517 } 1516 }
1518 void TurnEntry::OnChannelBindTimeout() { 1517 void TurnEntry::OnChannelBindTimeout() {
1519 state_ = STATE_UNBOUND; 1518 state_ = STATE_UNBOUND;
1520 port_->DestroyConnection(ext_addr_); 1519 port_->DestroyConnection(ext_addr_);
1521 } 1520 }
1522 } // namespace cricket 1521 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/p2p/base/turnport.h ('k') | webrtc/p2p/base/turnport_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698