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

Unified Diff: media/cast/test/loopback_transport.cc

Issue 362123005: Cast: Update simulator tool with more inputs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Diff Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: media/cast/test/loopback_transport.cc
diff --git a/media/cast/test/loopback_transport.cc b/media/cast/test/loopback_transport.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a8d604d6879d563347ba21e1728d36d312c5950b
--- /dev/null
+++ b/media/cast/test/loopback_transport.cc
@@ -0,0 +1,65 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/cast/test/loopback_transport.h"
+
+#include "base/single_thread_task_runner.h"
+#include "base/time/tick_clock.h"
+#include "media/cast/test/utility/udp_proxy.h"
+
+namespace media {
+namespace cast {
+namespace {
+
+// Shim that turns forwards packets from a test::PacketPipe to a
+// PacketReceiverCallback.
+class LoopBackPacketPipe : public test::PacketPipe {
+ public:
+ LoopBackPacketPipe(
+ const transport::PacketReceiverCallback& packet_receiver)
+ : packet_receiver_(packet_receiver) {}
+
+ virtual ~LoopBackPacketPipe() {}
+
+ // PacketPipe implementations.
+ virtual void Send(scoped_ptr<transport::Packet> packet) OVERRIDE {
+ packet_receiver_.Run(packet.Pass());
+ }
+
+ private:
+ transport::PacketReceiverCallback packet_receiver_;
+
+ DISALLOW_COPY_AND_ASSIGN(LoopBackPacketPipe);
+};
+
+} // namespace
+
+LoopBackTransport::LoopBackTransport(
+ scoped_refptr<CastEnvironment> cast_environment)
+ : cast_environment_(cast_environment) {
+}
+
+bool LoopBackTransport::SendPacket(transport::PacketRef packet,
+ const base::Closure& cb) OVERRIDE {
+ DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
+ scoped_ptr<Packet> packet_copy(new Packet(packet->data));
+ packet_pipe_->Send(packet_copy.Pass());
+ return true;
+}
+
+void LoopBackTransport::Initialize(
+ scoped_ptr<test::PacketPipe> pipe,
+ const transport::PacketReceiverCallback& packet_receiver,
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ base::TickClock* clock) {
+ scoped_ptr<test::PacketPipe> loopback_pipe(
+ new LoopBackPacketPipe(packet_receiver));
+ // Append the loopback pipe to the end.
+ pipe->AppendToPipe(loopback_pipe.Pass());
+ packet_pipe_ = pipe.Pass();
+ packet_pipe_->InitOnIOThread(task_runner, clock);
+}
+
+} // namespace cast
+} // namespace media

Powered by Google App Engine
This is Rietveld 408576698