Loading system/gd/l2cap/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ filegroup { "classic/internal/signalling_manager.cc", "classic/l2cap_classic_module.cc", "internal/basic_mode_channel_data_controller.cc", "internal/data_pipeline_manager.cc", "internal/enhanced_retransmission_mode_channel_data_controller.cc", "internal/le_credit_based_channel_data_controller.cc", "internal/receiver.cc", Loading system/gd/l2cap/classic/internal/dynamic_channel_allocator_fuzz_test.cc +1 −2 Original line number Diff line number Diff line Loading @@ -48,8 +48,7 @@ class L2capClassicDynamicChannelAllocatorFuzzTest { handler_ = new os::Handler(thread_); mock_parameter_provider_ = new NiceMock<MockParameterProvider>(); mock_classic_link_ = new NiceMock<MockLink>(handler_, mock_parameter_provider_, std::make_unique<NiceMock<MockAclConnection>>(), std::make_unique<NiceMock<MockScheduler>>()); new NiceMock<MockLink>(handler_, mock_parameter_provider_, std::make_unique<NiceMock<MockAclConnection>>()); EXPECT_CALL(*mock_classic_link_, GetDevice()).WillRepeatedly(Return(device)); channel_allocator_ = std::make_unique<DynamicChannelAllocator>(mock_classic_link_, handler_); } Loading system/gd/l2cap/classic/internal/link.cc +7 −11 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ #include "l2cap/classic/internal/fixed_channel_impl.h" #include "l2cap/classic/internal/link.h" #include "l2cap/internal/parameter_provider.h" #include "l2cap/internal/scheduler.h" #include "os/alarm.h" namespace bluetooth { Loading @@ -31,19 +30,16 @@ namespace classic { namespace internal { Link::Link(os::Handler* l2cap_handler, std::unique_ptr<hci::AclConnection> acl_connection, std::unique_ptr<l2cap::internal::Scheduler> scheduler, l2cap::internal::ParameterProvider* parameter_provider, DynamicChannelServiceManagerImpl* dynamic_service_manager, FixedChannelServiceManagerImpl* fixed_service_manager) : l2cap_handler_(l2cap_handler), acl_connection_(std::move(acl_connection)), scheduler_(std::move(scheduler)), receiver_(acl_connection_->GetAclQueueEnd(), l2cap_handler_, scheduler_.get()), parameter_provider_(parameter_provider), dynamic_service_manager_(dynamic_service_manager), fixed_service_manager_(fixed_service_manager), : l2cap_handler_(l2cap_handler), acl_connection_(std::move(acl_connection)), data_pipeline_manager_(l2cap_handler, acl_connection_->GetAclQueueEnd()), parameter_provider_(parameter_provider), dynamic_service_manager_(dynamic_service_manager), fixed_service_manager_(fixed_service_manager), signalling_manager_(l2cap_handler_, this, dynamic_service_manager_, &dynamic_channel_allocator_, fixed_service_manager_) { ASSERT(l2cap_handler_ != nullptr); ASSERT(acl_connection_ != nullptr); ASSERT(scheduler_ != nullptr); ASSERT(parameter_provider_ != nullptr); link_idle_disconnect_alarm_.Schedule(common::BindOnce(&Link::Disconnect, common::Unretained(this)), parameter_provider_->GetClassicLinkIdleDisconnectTimeout()); Loading @@ -60,7 +56,7 @@ void Link::Disconnect() { std::shared_ptr<FixedChannelImpl> Link::AllocateFixedChannel(Cid cid, SecurityPolicy security_policy) { auto channel = fixed_channel_allocator_.AllocateChannel(cid, security_policy); scheduler_->AttachChannel(cid, channel); data_pipeline_manager_.AttachChannel(cid, channel); return channel; } Loading Loading @@ -94,7 +90,7 @@ std::shared_ptr<DynamicChannelImpl> Link::AllocateDynamicChannel(Psm psm, Cid re SecurityPolicy security_policy) { auto channel = dynamic_channel_allocator_.AllocateChannel(psm, remote_cid, security_policy); if (channel != nullptr) { scheduler_->AttachChannel(channel->GetCid(), channel); data_pipeline_manager_.AttachChannel(channel->GetCid(), channel); } channel->local_initiated_ = false; return channel; Loading @@ -104,7 +100,7 @@ std::shared_ptr<DynamicChannelImpl> Link::AllocateReservedDynamicChannel(Cid res SecurityPolicy security_policy) { auto channel = dynamic_channel_allocator_.AllocateReservedChannel(reserved_cid, psm, remote_cid, security_policy); if (channel != nullptr) { scheduler_->AttachChannel(channel->GetCid(), channel); data_pipeline_manager_.AttachChannel(channel->GetCid(), channel); } channel->local_initiated_ = true; return channel; Loading @@ -120,7 +116,7 @@ void Link::FreeDynamicChannel(Cid cid) { if (dynamic_channel_allocator_.FindChannelByCid(cid) == nullptr) { return; } scheduler_->DetachChannel(cid); data_pipeline_manager_.DetachChannel(cid); dynamic_channel_allocator_.FreeChannel(cid); } Loading system/gd/l2cap/classic/internal/link.h +3 −5 Original line number Diff line number Diff line Loading @@ -26,10 +26,9 @@ #include "l2cap/classic/internal/dynamic_channel_service_manager_impl.h" #include "l2cap/classic/internal/fixed_channel_impl.h" #include "l2cap/classic/internal/fixed_channel_service_manager_impl.h" #include "l2cap/internal/data_pipeline_manager.h" #include "l2cap/internal/fixed_channel_allocator.h" #include "l2cap/internal/parameter_provider.h" #include "l2cap/internal/receiver.h" #include "l2cap/internal/scheduler.h" #include "os/alarm.h" #include "os/handler.h" #include "signalling_manager.h" Loading @@ -42,7 +41,7 @@ namespace internal { class Link { public: Link(os::Handler* l2cap_handler, std::unique_ptr<hci::AclConnection> acl_connection, std::unique_ptr<l2cap::internal::Scheduler> scheduler, l2cap::internal::ParameterProvider* parameter_provider, l2cap::internal::ParameterProvider* parameter_provider, DynamicChannelServiceManagerImpl* dynamic_service_manager, FixedChannelServiceManagerImpl* fixed_service_manager); Loading Loading @@ -116,8 +115,7 @@ class Link { l2cap::internal::FixedChannelAllocator<FixedChannelImpl, Link> fixed_channel_allocator_{this, l2cap_handler_}; DynamicChannelAllocator dynamic_channel_allocator_{this, l2cap_handler_}; std::unique_ptr<hci::AclConnection> acl_connection_; std::unique_ptr<l2cap::internal::Scheduler> scheduler_; l2cap::internal::Receiver receiver_; l2cap::internal::DataPipelineManager data_pipeline_manager_; l2cap::internal::ParameterProvider* parameter_provider_; DynamicChannelServiceManagerImpl* dynamic_service_manager_; FixedChannelServiceManagerImpl* fixed_service_manager_; Loading system/gd/l2cap/classic/internal/link_manager.cc +1 −3 Original line number Diff line number Diff line Loading @@ -114,9 +114,7 @@ void LinkManager::OnConnectSuccess(std::unique_ptr<hci::AclConnection> acl_conne // Register ACL disconnection callback in LinkManager so that we can clean up link resource properly acl_connection->RegisterDisconnectCallback( common::BindOnce(&LinkManager::OnDisconnect, common::Unretained(this), device), l2cap_handler_); auto* link_queue_up_end = acl_connection->GetAclQueueEnd(); links_.try_emplace(device, l2cap_handler_, std::move(acl_connection), std::make_unique<l2cap::internal::Fifo>(link_queue_up_end, l2cap_handler_), parameter_provider_, links_.try_emplace(device, l2cap_handler_, std::move(acl_connection), parameter_provider_, dynamic_channel_service_manager_, fixed_channel_service_manager_); auto* link = GetLink(device); ASSERT(link != nullptr); Loading Loading
system/gd/l2cap/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ filegroup { "classic/internal/signalling_manager.cc", "classic/l2cap_classic_module.cc", "internal/basic_mode_channel_data_controller.cc", "internal/data_pipeline_manager.cc", "internal/enhanced_retransmission_mode_channel_data_controller.cc", "internal/le_credit_based_channel_data_controller.cc", "internal/receiver.cc", Loading
system/gd/l2cap/classic/internal/dynamic_channel_allocator_fuzz_test.cc +1 −2 Original line number Diff line number Diff line Loading @@ -48,8 +48,7 @@ class L2capClassicDynamicChannelAllocatorFuzzTest { handler_ = new os::Handler(thread_); mock_parameter_provider_ = new NiceMock<MockParameterProvider>(); mock_classic_link_ = new NiceMock<MockLink>(handler_, mock_parameter_provider_, std::make_unique<NiceMock<MockAclConnection>>(), std::make_unique<NiceMock<MockScheduler>>()); new NiceMock<MockLink>(handler_, mock_parameter_provider_, std::make_unique<NiceMock<MockAclConnection>>()); EXPECT_CALL(*mock_classic_link_, GetDevice()).WillRepeatedly(Return(device)); channel_allocator_ = std::make_unique<DynamicChannelAllocator>(mock_classic_link_, handler_); } Loading
system/gd/l2cap/classic/internal/link.cc +7 −11 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ #include "l2cap/classic/internal/fixed_channel_impl.h" #include "l2cap/classic/internal/link.h" #include "l2cap/internal/parameter_provider.h" #include "l2cap/internal/scheduler.h" #include "os/alarm.h" namespace bluetooth { Loading @@ -31,19 +30,16 @@ namespace classic { namespace internal { Link::Link(os::Handler* l2cap_handler, std::unique_ptr<hci::AclConnection> acl_connection, std::unique_ptr<l2cap::internal::Scheduler> scheduler, l2cap::internal::ParameterProvider* parameter_provider, DynamicChannelServiceManagerImpl* dynamic_service_manager, FixedChannelServiceManagerImpl* fixed_service_manager) : l2cap_handler_(l2cap_handler), acl_connection_(std::move(acl_connection)), scheduler_(std::move(scheduler)), receiver_(acl_connection_->GetAclQueueEnd(), l2cap_handler_, scheduler_.get()), parameter_provider_(parameter_provider), dynamic_service_manager_(dynamic_service_manager), fixed_service_manager_(fixed_service_manager), : l2cap_handler_(l2cap_handler), acl_connection_(std::move(acl_connection)), data_pipeline_manager_(l2cap_handler, acl_connection_->GetAclQueueEnd()), parameter_provider_(parameter_provider), dynamic_service_manager_(dynamic_service_manager), fixed_service_manager_(fixed_service_manager), signalling_manager_(l2cap_handler_, this, dynamic_service_manager_, &dynamic_channel_allocator_, fixed_service_manager_) { ASSERT(l2cap_handler_ != nullptr); ASSERT(acl_connection_ != nullptr); ASSERT(scheduler_ != nullptr); ASSERT(parameter_provider_ != nullptr); link_idle_disconnect_alarm_.Schedule(common::BindOnce(&Link::Disconnect, common::Unretained(this)), parameter_provider_->GetClassicLinkIdleDisconnectTimeout()); Loading @@ -60,7 +56,7 @@ void Link::Disconnect() { std::shared_ptr<FixedChannelImpl> Link::AllocateFixedChannel(Cid cid, SecurityPolicy security_policy) { auto channel = fixed_channel_allocator_.AllocateChannel(cid, security_policy); scheduler_->AttachChannel(cid, channel); data_pipeline_manager_.AttachChannel(cid, channel); return channel; } Loading Loading @@ -94,7 +90,7 @@ std::shared_ptr<DynamicChannelImpl> Link::AllocateDynamicChannel(Psm psm, Cid re SecurityPolicy security_policy) { auto channel = dynamic_channel_allocator_.AllocateChannel(psm, remote_cid, security_policy); if (channel != nullptr) { scheduler_->AttachChannel(channel->GetCid(), channel); data_pipeline_manager_.AttachChannel(channel->GetCid(), channel); } channel->local_initiated_ = false; return channel; Loading @@ -104,7 +100,7 @@ std::shared_ptr<DynamicChannelImpl> Link::AllocateReservedDynamicChannel(Cid res SecurityPolicy security_policy) { auto channel = dynamic_channel_allocator_.AllocateReservedChannel(reserved_cid, psm, remote_cid, security_policy); if (channel != nullptr) { scheduler_->AttachChannel(channel->GetCid(), channel); data_pipeline_manager_.AttachChannel(channel->GetCid(), channel); } channel->local_initiated_ = true; return channel; Loading @@ -120,7 +116,7 @@ void Link::FreeDynamicChannel(Cid cid) { if (dynamic_channel_allocator_.FindChannelByCid(cid) == nullptr) { return; } scheduler_->DetachChannel(cid); data_pipeline_manager_.DetachChannel(cid); dynamic_channel_allocator_.FreeChannel(cid); } Loading
system/gd/l2cap/classic/internal/link.h +3 −5 Original line number Diff line number Diff line Loading @@ -26,10 +26,9 @@ #include "l2cap/classic/internal/dynamic_channel_service_manager_impl.h" #include "l2cap/classic/internal/fixed_channel_impl.h" #include "l2cap/classic/internal/fixed_channel_service_manager_impl.h" #include "l2cap/internal/data_pipeline_manager.h" #include "l2cap/internal/fixed_channel_allocator.h" #include "l2cap/internal/parameter_provider.h" #include "l2cap/internal/receiver.h" #include "l2cap/internal/scheduler.h" #include "os/alarm.h" #include "os/handler.h" #include "signalling_manager.h" Loading @@ -42,7 +41,7 @@ namespace internal { class Link { public: Link(os::Handler* l2cap_handler, std::unique_ptr<hci::AclConnection> acl_connection, std::unique_ptr<l2cap::internal::Scheduler> scheduler, l2cap::internal::ParameterProvider* parameter_provider, l2cap::internal::ParameterProvider* parameter_provider, DynamicChannelServiceManagerImpl* dynamic_service_manager, FixedChannelServiceManagerImpl* fixed_service_manager); Loading Loading @@ -116,8 +115,7 @@ class Link { l2cap::internal::FixedChannelAllocator<FixedChannelImpl, Link> fixed_channel_allocator_{this, l2cap_handler_}; DynamicChannelAllocator dynamic_channel_allocator_{this, l2cap_handler_}; std::unique_ptr<hci::AclConnection> acl_connection_; std::unique_ptr<l2cap::internal::Scheduler> scheduler_; l2cap::internal::Receiver receiver_; l2cap::internal::DataPipelineManager data_pipeline_manager_; l2cap::internal::ParameterProvider* parameter_provider_; DynamicChannelServiceManagerImpl* dynamic_service_manager_; FixedChannelServiceManagerImpl* fixed_service_manager_; Loading
system/gd/l2cap/classic/internal/link_manager.cc +1 −3 Original line number Diff line number Diff line Loading @@ -114,9 +114,7 @@ void LinkManager::OnConnectSuccess(std::unique_ptr<hci::AclConnection> acl_conne // Register ACL disconnection callback in LinkManager so that we can clean up link resource properly acl_connection->RegisterDisconnectCallback( common::BindOnce(&LinkManager::OnDisconnect, common::Unretained(this), device), l2cap_handler_); auto* link_queue_up_end = acl_connection->GetAclQueueEnd(); links_.try_emplace(device, l2cap_handler_, std::move(acl_connection), std::make_unique<l2cap::internal::Fifo>(link_queue_up_end, l2cap_handler_), parameter_provider_, links_.try_emplace(device, l2cap_handler_, std::move(acl_connection), parameter_provider_, dynamic_channel_service_manager_, fixed_channel_service_manager_); auto* link = GetLink(device); ASSERT(link != nullptr); Loading