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

Side by Side Diff: media/cast/test/utility/udp_proxy.cc

Issue 623263003: replace OVERRIDE and FINAL with override and final in media/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 | « media/cast/test/utility/tap_proxy.cc ('k') | media/cast/test/utility/udp_proxy_main.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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <math.h> 5 #include <math.h>
6 #include <stdlib.h> 6 #include <stdlib.h>
7 #include <vector> 7 #include <vector>
8 8
9 #include "media/cast/test/utility/udp_proxy.h" 9 #include "media/cast/test/utility/udp_proxy.h"
10 10
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 public: 49 public:
50 Buffer(size_t buffer_size, double max_megabits_per_second) 50 Buffer(size_t buffer_size, double max_megabits_per_second)
51 : buffer_size_(0), 51 : buffer_size_(0),
52 max_buffer_size_(buffer_size), 52 max_buffer_size_(buffer_size),
53 max_megabits_per_second_(max_megabits_per_second), 53 max_megabits_per_second_(max_megabits_per_second),
54 weak_factory_(this) { 54 weak_factory_(this) {
55 CHECK_GT(max_buffer_size_, 0UL); 55 CHECK_GT(max_buffer_size_, 0UL);
56 CHECK_GT(max_megabits_per_second, 0); 56 CHECK_GT(max_megabits_per_second, 0);
57 } 57 }
58 58
59 virtual void Send(scoped_ptr<Packet> packet) OVERRIDE { 59 virtual void Send(scoped_ptr<Packet> packet) override {
60 if (packet->size() + buffer_size_ <= max_buffer_size_) { 60 if (packet->size() + buffer_size_ <= max_buffer_size_) {
61 buffer_size_ += packet->size(); 61 buffer_size_ += packet->size();
62 buffer_.push_back(linked_ptr<Packet>(packet.release())); 62 buffer_.push_back(linked_ptr<Packet>(packet.release()));
63 if (buffer_.size() == 1) { 63 if (buffer_.size() == 1) {
64 Schedule(); 64 Schedule();
65 } 65 }
66 } 66 }
67 } 67 }
68 68
69 private: 69 private:
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 109
110 scoped_ptr<PacketPipe> NewBuffer(size_t buffer_size, double bandwidth) { 110 scoped_ptr<PacketPipe> NewBuffer(size_t buffer_size, double bandwidth) {
111 return scoped_ptr<PacketPipe>(new Buffer(buffer_size, bandwidth)).Pass(); 111 return scoped_ptr<PacketPipe>(new Buffer(buffer_size, bandwidth)).Pass();
112 } 112 }
113 113
114 class RandomDrop : public PacketPipe { 114 class RandomDrop : public PacketPipe {
115 public: 115 public:
116 RandomDrop(double drop_fraction) 116 RandomDrop(double drop_fraction)
117 : drop_fraction_(static_cast<int>(drop_fraction * RAND_MAX)) {} 117 : drop_fraction_(static_cast<int>(drop_fraction * RAND_MAX)) {}
118 118
119 virtual void Send(scoped_ptr<Packet> packet) OVERRIDE { 119 virtual void Send(scoped_ptr<Packet> packet) override {
120 if (rand() > drop_fraction_) { 120 if (rand() > drop_fraction_) {
121 pipe_->Send(packet.Pass()); 121 pipe_->Send(packet.Pass());
122 } 122 }
123 } 123 }
124 124
125 private: 125 private:
126 int drop_fraction_; 126 int drop_fraction_;
127 }; 127 };
128 128
129 scoped_ptr<PacketPipe> NewRandomDrop(double drop_fraction) { 129 scoped_ptr<PacketPipe> NewRandomDrop(double drop_fraction) {
130 return scoped_ptr<PacketPipe>(new RandomDrop(drop_fraction)).Pass(); 130 return scoped_ptr<PacketPipe>(new RandomDrop(drop_fraction)).Pass();
131 } 131 }
132 132
133 class SimpleDelayBase : public PacketPipe { 133 class SimpleDelayBase : public PacketPipe {
134 public: 134 public:
135 SimpleDelayBase() : weak_factory_(this) {} 135 SimpleDelayBase() : weak_factory_(this) {}
136 virtual ~SimpleDelayBase() {} 136 virtual ~SimpleDelayBase() {}
137 137
138 virtual void Send(scoped_ptr<Packet> packet) OVERRIDE { 138 virtual void Send(scoped_ptr<Packet> packet) override {
139 double seconds = GetDelay(); 139 double seconds = GetDelay();
140 task_runner_->PostDelayedTask( 140 task_runner_->PostDelayedTask(
141 FROM_HERE, 141 FROM_HERE,
142 base::Bind(&SimpleDelayBase::SendInternal, 142 base::Bind(&SimpleDelayBase::SendInternal,
143 weak_factory_.GetWeakPtr(), 143 weak_factory_.GetWeakPtr(),
144 base::Passed(&packet)), 144 base::Passed(&packet)),
145 base::TimeDelta::FromMicroseconds(static_cast<int64>(seconds * 1E6))); 145 base::TimeDelta::FromMicroseconds(static_cast<int64>(seconds * 1E6)));
146 } 146 }
147 protected: 147 protected:
148 virtual double GetDelay() = 0; 148 virtual double GetDelay() = 0;
149 149
150 private: 150 private:
151 virtual void SendInternal(scoped_ptr<Packet> packet) { 151 virtual void SendInternal(scoped_ptr<Packet> packet) {
152 pipe_->Send(packet.Pass()); 152 pipe_->Send(packet.Pass());
153 } 153 }
154 154
155 base::WeakPtrFactory<SimpleDelayBase> weak_factory_; 155 base::WeakPtrFactory<SimpleDelayBase> weak_factory_;
156 }; 156 };
157 157
158 class ConstantDelay : public SimpleDelayBase { 158 class ConstantDelay : public SimpleDelayBase {
159 public: 159 public:
160 ConstantDelay(double delay_seconds) : delay_seconds_(delay_seconds) {} 160 ConstantDelay(double delay_seconds) : delay_seconds_(delay_seconds) {}
161 virtual double GetDelay() OVERRIDE { 161 virtual double GetDelay() override {
162 return delay_seconds_; 162 return delay_seconds_;
163 } 163 }
164 164
165 private: 165 private:
166 double delay_seconds_; 166 double delay_seconds_;
167 }; 167 };
168 168
169 scoped_ptr<PacketPipe> NewConstantDelay(double delay_seconds) { 169 scoped_ptr<PacketPipe> NewConstantDelay(double delay_seconds) {
170 return scoped_ptr<PacketPipe>(new ConstantDelay(delay_seconds)).Pass(); 170 return scoped_ptr<PacketPipe>(new ConstantDelay(delay_seconds)).Pass();
171 } 171 }
172 172
173 class RandomUnsortedDelay : public SimpleDelayBase { 173 class RandomUnsortedDelay : public SimpleDelayBase {
174 public: 174 public:
175 RandomUnsortedDelay(double random_delay) : random_delay_(random_delay) {} 175 RandomUnsortedDelay(double random_delay) : random_delay_(random_delay) {}
176 176
177 virtual double GetDelay() OVERRIDE { 177 virtual double GetDelay() override {
178 return random_delay_ * base::RandDouble(); 178 return random_delay_ * base::RandDouble();
179 } 179 }
180 180
181 private: 181 private:
182 double random_delay_; 182 double random_delay_;
183 }; 183 };
184 184
185 scoped_ptr<PacketPipe> NewRandomUnsortedDelay(double random_delay) { 185 scoped_ptr<PacketPipe> NewRandomUnsortedDelay(double random_delay) {
186 return scoped_ptr<PacketPipe>(new RandomUnsortedDelay(random_delay)).Pass(); 186 return scoped_ptr<PacketPipe>(new RandomUnsortedDelay(random_delay)).Pass();
187 } 187 }
188 188
189 class DuplicateAndDelay : public RandomUnsortedDelay { 189 class DuplicateAndDelay : public RandomUnsortedDelay {
190 public: 190 public:
191 DuplicateAndDelay(double delay_min, 191 DuplicateAndDelay(double delay_min,
192 double random_delay) : 192 double random_delay) :
193 RandomUnsortedDelay(random_delay), 193 RandomUnsortedDelay(random_delay),
194 delay_min_(delay_min) { 194 delay_min_(delay_min) {
195 } 195 }
196 virtual void Send(scoped_ptr<Packet> packet) OVERRIDE { 196 virtual void Send(scoped_ptr<Packet> packet) override {
197 pipe_->Send(scoped_ptr<Packet>(new Packet(*packet.get()))); 197 pipe_->Send(scoped_ptr<Packet>(new Packet(*packet.get())));
198 RandomUnsortedDelay::Send(packet.Pass()); 198 RandomUnsortedDelay::Send(packet.Pass());
199 } 199 }
200 virtual double GetDelay() OVERRIDE { 200 virtual double GetDelay() override {
201 return RandomUnsortedDelay::GetDelay() + delay_min_; 201 return RandomUnsortedDelay::GetDelay() + delay_min_;
202 } 202 }
203 private: 203 private:
204 double delay_min_; 204 double delay_min_;
205 }; 205 };
206 206
207 scoped_ptr<PacketPipe> NewDuplicateAndDelay(double delay_min, 207 scoped_ptr<PacketPipe> NewDuplicateAndDelay(double delay_min,
208 double random_delay) { 208 double random_delay) {
209 return scoped_ptr<PacketPipe>( 209 return scoped_ptr<PacketPipe>(
210 new DuplicateAndDelay(delay_min, random_delay)).Pass(); 210 new DuplicateAndDelay(delay_min, random_delay)).Pass();
211 } 211 }
212 212
213 class RandomSortedDelay : public PacketPipe { 213 class RandomSortedDelay : public PacketPipe {
214 public: 214 public:
215 RandomSortedDelay(double random_delay, 215 RandomSortedDelay(double random_delay,
216 double extra_delay, 216 double extra_delay,
217 double seconds_between_extra_delay) 217 double seconds_between_extra_delay)
218 : random_delay_(random_delay), 218 : random_delay_(random_delay),
219 extra_delay_(extra_delay), 219 extra_delay_(extra_delay),
220 seconds_between_extra_delay_(seconds_between_extra_delay), 220 seconds_between_extra_delay_(seconds_between_extra_delay),
221 weak_factory_(this) {} 221 weak_factory_(this) {}
222 222
223 virtual void Send(scoped_ptr<Packet> packet) OVERRIDE { 223 virtual void Send(scoped_ptr<Packet> packet) override {
224 buffer_.push_back(linked_ptr<Packet>(packet.release())); 224 buffer_.push_back(linked_ptr<Packet>(packet.release()));
225 if (buffer_.size() == 1) { 225 if (buffer_.size() == 1) {
226 next_send_ = std::max( 226 next_send_ = std::max(
227 clock_->NowTicks() + 227 clock_->NowTicks() +
228 base::TimeDelta::FromSecondsD(base::RandDouble() * random_delay_), 228 base::TimeDelta::FromSecondsD(base::RandDouble() * random_delay_),
229 next_send_); 229 next_send_);
230 ProcessBuffer(); 230 ProcessBuffer();
231 } 231 }
232 } 232 }
233 virtual void InitOnIOThread( 233 virtual void InitOnIOThread(
234 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 234 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
235 base::TickClock* clock) OVERRIDE { 235 base::TickClock* clock) override {
236 PacketPipe::InitOnIOThread(task_runner, clock); 236 PacketPipe::InitOnIOThread(task_runner, clock);
237 // As we start the stream, assume that we are in a random 237 // As we start the stream, assume that we are in a random
238 // place between two extra delays, thus multiplier = 1.0; 238 // place between two extra delays, thus multiplier = 1.0;
239 ScheduleExtraDelay(1.0); 239 ScheduleExtraDelay(1.0);
240 } 240 }
241 241
242 private: 242 private:
243 void ScheduleExtraDelay(double mult) { 243 void ScheduleExtraDelay(double mult) {
244 double seconds = seconds_between_extra_delay_ * mult * base::RandDouble(); 244 double seconds = seconds_between_extra_delay_ * mult * base::RandDouble();
245 int64 microseconds = static_cast<int64>(seconds * 1E6); 245 int64 microseconds = static_cast<int64>(seconds * 1E6);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 class NetworkGlitchPipe : public PacketPipe { 304 class NetworkGlitchPipe : public PacketPipe {
305 public: 305 public:
306 NetworkGlitchPipe(double average_work_time, double average_outage_time) 306 NetworkGlitchPipe(double average_work_time, double average_outage_time)
307 : works_(false), 307 : works_(false),
308 max_work_time_(average_work_time * 2), 308 max_work_time_(average_work_time * 2),
309 max_outage_time_(average_outage_time * 2), 309 max_outage_time_(average_outage_time * 2),
310 weak_factory_(this) {} 310 weak_factory_(this) {}
311 311
312 virtual void InitOnIOThread( 312 virtual void InitOnIOThread(
313 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 313 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
314 base::TickClock* clock) OVERRIDE { 314 base::TickClock* clock) override {
315 PacketPipe::InitOnIOThread(task_runner, clock); 315 PacketPipe::InitOnIOThread(task_runner, clock);
316 Flip(); 316 Flip();
317 } 317 }
318 318
319 virtual void Send(scoped_ptr<Packet> packet) OVERRIDE { 319 virtual void Send(scoped_ptr<Packet> packet) override {
320 if (works_) { 320 if (works_) {
321 pipe_->Send(packet.Pass()); 321 pipe_->Send(packet.Pass());
322 } 322 }
323 } 323 }
324 324
325 private: 325 private:
326 void Flip() { 326 void Flip() {
327 works_ = !works_; 327 works_ = !works_;
328 double seconds = base::RandDouble() * 328 double seconds = base::RandDouble() *
329 (works_ ? max_work_time_ : max_outage_time_); 329 (works_ ? max_work_time_ : max_outage_time_);
(...skipping 23 matching lines...) Expand all
353 public: 353 public:
354 InternalBuffer(base::WeakPtr<InterruptedPoissonProcess> ipp, 354 InternalBuffer(base::WeakPtr<InterruptedPoissonProcess> ipp,
355 size_t size) 355 size_t size)
356 : ipp_(ipp), 356 : ipp_(ipp),
357 stored_size_(0), 357 stored_size_(0),
358 stored_limit_(size), 358 stored_limit_(size),
359 clock_(NULL), 359 clock_(NULL),
360 weak_factory_(this) { 360 weak_factory_(this) {
361 } 361 }
362 362
363 virtual void Send(scoped_ptr<Packet> packet) OVERRIDE { 363 virtual void Send(scoped_ptr<Packet> packet) override {
364 // Drop if buffer is full. 364 // Drop if buffer is full.
365 if (stored_size_ >= stored_limit_) 365 if (stored_size_ >= stored_limit_)
366 return; 366 return;
367 stored_size_ += packet->size(); 367 stored_size_ += packet->size();
368 buffer_.push_back(linked_ptr<Packet>(packet.release())); 368 buffer_.push_back(linked_ptr<Packet>(packet.release()));
369 buffer_time_.push_back(clock_->NowTicks()); 369 buffer_time_.push_back(clock_->NowTicks());
370 DCHECK(buffer_.size() == buffer_time_.size()); 370 DCHECK(buffer_.size() == buffer_time_.size());
371 } 371 }
372 372
373 virtual void InitOnIOThread( 373 virtual void InitOnIOThread(
374 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 374 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
375 base::TickClock* clock) OVERRIDE { 375 base::TickClock* clock) override {
376 clock_ = clock; 376 clock_ = clock;
377 if (ipp_) 377 if (ipp_)
378 ipp_->InitOnIOThread(task_runner, clock); 378 ipp_->InitOnIOThread(task_runner, clock);
379 PacketPipe::InitOnIOThread(task_runner, clock); 379 PacketPipe::InitOnIOThread(task_runner, clock);
380 } 380 }
381 381
382 void SendOnePacket() { 382 void SendOnePacket() {
383 scoped_ptr<Packet> packet(buffer_.front().release()); 383 scoped_ptr<Packet> packet(buffer_.front().release());
384 stored_size_ -= packet->size(); 384 stored_size_ -= packet->size();
385 buffer_.pop_front(); 385 buffer_.pop_front();
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 break; 545 break;
546 } 546 }
547 } 547 }
548 548
549 class UDPProxyImpl; 549 class UDPProxyImpl;
550 550
551 class PacketSender : public PacketPipe { 551 class PacketSender : public PacketPipe {
552 public: 552 public:
553 PacketSender(UDPProxyImpl* udp_proxy, const net::IPEndPoint* destination) 553 PacketSender(UDPProxyImpl* udp_proxy, const net::IPEndPoint* destination)
554 : udp_proxy_(udp_proxy), destination_(destination) {} 554 : udp_proxy_(udp_proxy), destination_(destination) {}
555 virtual void Send(scoped_ptr<Packet> packet) OVERRIDE; 555 virtual void Send(scoped_ptr<Packet> packet) override;
556 virtual void AppendToPipe(scoped_ptr<PacketPipe> pipe) OVERRIDE { 556 virtual void AppendToPipe(scoped_ptr<PacketPipe> pipe) override {
557 NOTREACHED(); 557 NOTREACHED();
558 } 558 }
559 559
560 private: 560 private:
561 UDPProxyImpl* udp_proxy_; 561 UDPProxyImpl* udp_proxy_;
562 const net::IPEndPoint* destination_; // not owned 562 const net::IPEndPoint* destination_; // not owned
563 }; 563 };
564 564
565 namespace { 565 namespace {
566 void BuildPipe(scoped_ptr<PacketPipe>* pipe, PacketPipe* next) { 566 void BuildPipe(scoped_ptr<PacketPipe>* pipe, PacketPipe* next) {
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 destination, 830 destination,
831 to_dest_pipe.Pass(), 831 to_dest_pipe.Pass(),
832 from_dest_pipe.Pass(), 832 from_dest_pipe.Pass(),
833 net_log)); 833 net_log));
834 return ret.Pass(); 834 return ret.Pass();
835 } 835 }
836 836
837 } // namespace test 837 } // namespace test
838 } // namespace cast 838 } // namespace cast
839 } // namespace media 839 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/test/utility/tap_proxy.cc ('k') | media/cast/test/utility/udp_proxy_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698