aboutsummaryrefslogtreecommitdiff
path: root/cast/sender
diff options
context:
space:
mode:
authorYuri Wiitala <miu@chromium.org>2020-11-30 08:13:53 -0800
committerYuri Wiitala <miu@chromium.org>2020-11-30 20:03:13 +0000
commitc6465ca683e686cd7f7dfa347e86451425e7af25 (patch)
tree71d7a43bb08d7d94d576e55c0e5ef0c0c5876040 /cast/sender
parent9be11f7d2b44dff83dc88dff054b967a43f319cc (diff)
downloadopenscreen-c6465ca683e686cd7f7dfa347e86451425e7af25.tar.gz
Remote virtual connections [1/3]: Refactor VCRouter to extend VCManager.
This is a clean-up patch to simplify code structure. Before this patch, all clients of VirtualConnectionRouter need to instantiate both a VirtualConnectionManager and a VirtualConnectionRouter, and then pass the former (by pointer) to the latter. After this patch, VCR extends VCM, and clients need not worry about a VCM. Bug: b/162542369 Change-Id: I0dff69819d9b5282a43643a2da0fe33e7bf0a3fd Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2546803 Reviewed-by: Brandon Tolsch <btolsch@chromium.org>
Diffstat (limited to 'cast/sender')
-rw-r--r--cast/sender/cast_app_discovery_service_impl_unittest.cc9
-rw-r--r--cast/sender/cast_platform_client.cc12
-rw-r--r--cast/sender/cast_platform_client.h5
-rw-r--r--cast/sender/cast_platform_client_unittest.cc9
4 files changed, 15 insertions, 20 deletions
diff --git a/cast/sender/cast_app_discovery_service_impl_unittest.cc b/cast/sender/cast_app_discovery_service_impl_unittest.cc
index 9f2f8793..a2eeb046 100644
--- a/cast/sender/cast_app_discovery_service_impl_unittest.cc
+++ b/cast/sender/cast_app_discovery_service_impl_unittest.cc
@@ -4,9 +4,10 @@
#include "cast/sender/cast_app_discovery_service_impl.h"
+#include <utility>
+
#include "cast/common/channel/testing/fake_cast_socket.h"
#include "cast/common/channel/testing/mock_socket_error_handler.h"
-#include "cast/common/channel/virtual_connection_manager.h"
#include "cast/common/channel/virtual_connection_router.h"
#include "cast/common/public/service_info.h"
#include "cast/sender/testing/test_helpers.h"
@@ -79,12 +80,10 @@ class CastAppDiscoveryServiceImplTest : public ::testing::Test {
FakeCastSocketPair fake_cast_socket_pair_;
int32_t socket_id_;
MockSocketErrorHandler mock_error_handler_;
- VirtualConnectionManager manager_;
- VirtualConnectionRouter router_{&manager_};
+ VirtualConnectionRouter router_;
FakeClock clock_{Clock::now()};
FakeTaskRunner task_runner_{&clock_};
- CastPlatformClient platform_client_{&router_, &manager_, &FakeClock::now,
- &task_runner_};
+ CastPlatformClient platform_client_{&router_, &FakeClock::now, &task_runner_};
CastAppDiscoveryServiceImpl app_discovery_service_{&platform_client_,
&FakeClock::now};
diff --git a/cast/sender/cast_platform_client.cc b/cast/sender/cast_platform_client.cc
index f57adc8b..c321201a 100644
--- a/cast/sender/cast_platform_client.cc
+++ b/cast/sender/cast_platform_client.cc
@@ -9,7 +9,6 @@
#include <utility>
#include "absl/strings/str_cat.h"
-#include "cast/common/channel/virtual_connection_manager.h"
#include "cast/common/channel/virtual_connection_router.h"
#include "cast/common/public/cast_socket.h"
#include "cast/common/public/service_info.h"
@@ -23,21 +22,20 @@ namespace cast {
static constexpr std::chrono::seconds kRequestTimeout = std::chrono::seconds(5);
CastPlatformClient::CastPlatformClient(VirtualConnectionRouter* router,
- VirtualConnectionManager* manager,
ClockNowFunctionPtr clock,
TaskRunner* task_runner)
: sender_id_(MakeUniqueSessionId("sender")),
virtual_conn_router_(router),
- virtual_conn_manager_(manager),
clock_(clock),
task_runner_(task_runner) {
- OSP_DCHECK(virtual_conn_manager_);
+ OSP_DCHECK(virtual_conn_router_);
OSP_DCHECK(clock_);
OSP_DCHECK(task_runner_);
virtual_conn_router_->AddHandlerForLocalId(sender_id_, this);
}
CastPlatformClient::~CastPlatformClient() {
+ virtual_conn_router_->RemoveConnectionsByLocalId(sender_id_);
virtual_conn_router_->RemoveHandlerForLocalId(sender_id_);
for (auto& pending_requests : pending_requests_by_device_id_) {
@@ -73,9 +71,9 @@ absl::optional<int> CastPlatformClient::RequestAppAvailability(
request_id, app_id, std::move(timeout), std::move(callback)});
VirtualConnection virtual_conn{sender_id_, kPlatformReceiverId, socket_id};
- if (!virtual_conn_manager_->GetConnectionData(virtual_conn)) {
- virtual_conn_manager_->AddConnection(virtual_conn,
- VirtualConnection::AssociatedData{});
+ if (!virtual_conn_router_->GetConnectionData(virtual_conn)) {
+ virtual_conn_router_->AddConnection(virtual_conn,
+ VirtualConnection::AssociatedData{});
}
virtual_conn_router_->Send(std::move(virtual_conn),
diff --git a/cast/sender/cast_platform_client.h b/cast/sender/cast_platform_client.h
index 41ad7fc7..8ea9a99a 100644
--- a/cast/sender/cast_platform_client.h
+++ b/cast/sender/cast_platform_client.h
@@ -7,7 +7,9 @@
#include <functional>
#include <map>
+#include <memory>
#include <string>
+#include <vector>
#include "absl/types/optional.h"
#include "cast/common/channel/cast_message_handler.h"
@@ -19,7 +21,6 @@ namespace openscreen {
namespace cast {
struct ServiceInfo;
-class VirtualConnectionManager;
class VirtualConnectionRouter;
// This class handles Cast messages that generally relate to the "platform", in
@@ -35,7 +36,6 @@ class CastPlatformClient final : public CastMessageHandler {
std::function<void(const std::string& app_id, AppAvailabilityResult)>;
CastPlatformClient(VirtualConnectionRouter* router,
- VirtualConnectionManager* manager,
ClockNowFunctionPtr clock,
TaskRunner* task_runner);
~CastPlatformClient() override;
@@ -82,7 +82,6 @@ class CastPlatformClient final : public CastMessageHandler {
const std::string sender_id_;
VirtualConnectionRouter* const virtual_conn_router_;
- VirtualConnectionManager* const virtual_conn_manager_;
std::map<std::string /* device_id */, int> socket_id_by_device_id_;
std::map<std::string /* device_id */, PendingRequests>
pending_requests_by_device_id_;
diff --git a/cast/sender/cast_platform_client_unittest.cc b/cast/sender/cast_platform_client_unittest.cc
index eaaf5c6e..ae721a15 100644
--- a/cast/sender/cast_platform_client_unittest.cc
+++ b/cast/sender/cast_platform_client_unittest.cc
@@ -4,9 +4,10 @@
#include "cast/sender/cast_platform_client.h"
+#include <utility>
+
#include "cast/common/channel/testing/fake_cast_socket.h"
#include "cast/common/channel/testing/mock_socket_error_handler.h"
-#include "cast/common/channel/virtual_connection_manager.h"
#include "cast/common/channel/virtual_connection_router.h"
#include "cast/common/public/service_info.h"
#include "cast/sender/testing/test_helpers.h"
@@ -46,12 +47,10 @@ class CastPlatformClientTest : public ::testing::Test {
FakeCastSocketPair fake_cast_socket_pair_;
CastSocket* socket_ = nullptr;
MockSocketErrorHandler mock_error_handler_;
- VirtualConnectionManager manager_;
- VirtualConnectionRouter router_{&manager_};
+ VirtualConnectionRouter router_;
FakeClock clock_{Clock::now()};
FakeTaskRunner task_runner_{&clock_};
- CastPlatformClient platform_client_{&router_, &manager_, &FakeClock::now,
- &task_runner_};
+ CastPlatformClient platform_client_{&router_, &FakeClock::now, &task_runner_};
ServiceInfo receiver_;
};