Loading system/gd/l2cap/internal/scheduler.h +1 −1 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ class Scheduler { virtual void DetachChannel(Cid cid) {} /** * Callback from the segmenter to indicate that the scheduler could dequeue number_packets from it * Callback from the sender to indicate that the scheduler could dequeue number_packets from it */ virtual void OnPacketsReady(Cid cid, int number_packets) {} Loading system/gd/l2cap/internal/scheduler_fifo.cc +12 −12 Original line number Diff line number Diff line Loading @@ -30,21 +30,21 @@ Fifo::Fifo(LowerQueueUpEnd* link_queue_up_end, os::Handler* handler) } Fifo::~Fifo() { segmenter_map_.clear(); sender_map_.clear(); if (link_queue_enqueue_registered_) { link_queue_up_end_->UnregisterEnqueue(); } } void Fifo::AttachChannel(Cid cid, std::shared_ptr<ChannelImpl> channel) { ASSERT(segmenter_map_.find(cid) == segmenter_map_.end()); segmenter_map_.emplace(std::piecewise_construct, std::forward_as_tuple(cid), ASSERT(sender_map_.find(cid) == sender_map_.end()); sender_map_.emplace(std::piecewise_construct, std::forward_as_tuple(cid), std::forward_as_tuple(handler_, this, channel)); } void Fifo::DetachChannel(Cid cid) { ASSERT(segmenter_map_.find(cid) != segmenter_map_.end()); segmenter_map_.erase(cid); ASSERT(sender_map_.find(cid) != sender_map_.end()); sender_map_.erase(cid); } void Fifo::OnPacketsReady(Cid cid, int number_packets) { Loading @@ -60,9 +60,9 @@ std::unique_ptr<Fifo::UpperDequeue> Fifo::link_queue_enqueue_callback() { if (channel_id_and_number_packets.second == 0) { next_to_dequeue_and_num_packets.pop(); } auto packet = segmenter_map_.find(channel_id)->second.GetNextPacket(); auto packet = sender_map_.find(channel_id)->second.GetNextPacket(); segmenter_map_.find(channel_id)->second.OnPacketSent(); sender_map_.find(channel_id)->second.OnPacketSent(); if (next_to_dequeue_and_num_packets.empty()) { link_queue_up_end_->UnregisterEnqueue(); link_queue_enqueue_registered_ = false; Loading @@ -80,15 +80,15 @@ void Fifo::try_register_link_queue_enqueue() { } void Fifo::SetChannelRetransmissionFlowControlMode(Cid cid, RetransmissionAndFlowControlModeOption mode) { ASSERT(segmenter_map_.find(cid) != segmenter_map_.end()); segmenter_map_.find(cid)->second.SetChannelRetransmissionFlowControlMode(mode); ASSERT(sender_map_.find(cid) != sender_map_.end()); sender_map_.find(cid)->second.SetChannelRetransmissionFlowControlMode(mode); } DataController* Fifo::GetDataController(Cid cid) { if (segmenter_map_.find(cid) == segmenter_map_.end()) { if (sender_map_.find(cid) == sender_map_.end()) { return nullptr; } return segmenter_map_.find(cid)->second.GetDataController(); return sender_map_.find(cid)->second.GetDataController(); } } // namespace internal Loading system/gd/l2cap/internal/scheduler_fifo.h +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ class Fifo : public Scheduler { private: LowerQueueUpEnd* link_queue_up_end_; os::Handler* handler_; std::unordered_map<Cid, Sender> segmenter_map_; std::unordered_map<Cid, Sender> sender_map_; std::queue<std::pair<Cid, int>> next_to_dequeue_and_num_packets; bool link_queue_enqueue_registered_ = false; Loading system/gd/l2cap/internal/sender.h +1 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ class Sender { ~Sender(); /** * Callback from scheduler to indicate that scheduler already dequeued a packet from segmenter's queue. * Callback from scheduler to indicate that scheduler already dequeued a packet from sender's queue. * Segmenter can continue dequeuing from channel queue end. */ void OnPacketSent(); Loading system/gd/l2cap/internal/sender_test.cc +4 −4 Original line number Diff line number Diff line Loading @@ -71,11 +71,11 @@ class L2capSegmenterTest : public ::testing::Test { .WillRepeatedly(Return(RetransmissionAndFlowControlModeOption::L2CAP_BASIC)); EXPECT_CALL(*mock_channel_, GetCid()).WillRepeatedly(Return(0x41)); EXPECT_CALL(*mock_channel_, GetRemoteCid()).WillRepeatedly(Return(0x41)); segmenter_ = new Sender(queue_handler_, &scheduler_, mock_channel_); sender_ = new Sender(queue_handler_, &scheduler_, mock_channel_); } void TearDown() override { delete segmenter_; delete sender_; queue_handler_->Clear(); user_handler_->Clear(); delete queue_handler_; Loading @@ -88,7 +88,7 @@ class L2capSegmenterTest : public ::testing::Test { os::Handler* queue_handler_ = nullptr; common::BidiQueue<Sender::UpperEnqueue, Sender::UpperDequeue> channel_queue_{10}; std::shared_ptr<testing::MockChannelImpl> mock_channel_; Sender* segmenter_ = nullptr; Sender* sender_ = nullptr; FakeScheduler scheduler_; }; Loading @@ -101,7 +101,7 @@ TEST_F(L2capSegmenterTest, send_packet) { queue_handler_, common::Bind(&L2capSegmenterTest::enqueue_callback, common::Unretained(this))); auto status = future.wait_for(std::chrono::milliseconds(3)); EXPECT_EQ(status, std::future_status::ready); auto packet = segmenter_->GetNextPacket(); auto packet = sender_->GetNextPacket(); EXPECT_NE(packet, nullptr); } Loading Loading
system/gd/l2cap/internal/scheduler.h +1 −1 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ class Scheduler { virtual void DetachChannel(Cid cid) {} /** * Callback from the segmenter to indicate that the scheduler could dequeue number_packets from it * Callback from the sender to indicate that the scheduler could dequeue number_packets from it */ virtual void OnPacketsReady(Cid cid, int number_packets) {} Loading
system/gd/l2cap/internal/scheduler_fifo.cc +12 −12 Original line number Diff line number Diff line Loading @@ -30,21 +30,21 @@ Fifo::Fifo(LowerQueueUpEnd* link_queue_up_end, os::Handler* handler) } Fifo::~Fifo() { segmenter_map_.clear(); sender_map_.clear(); if (link_queue_enqueue_registered_) { link_queue_up_end_->UnregisterEnqueue(); } } void Fifo::AttachChannel(Cid cid, std::shared_ptr<ChannelImpl> channel) { ASSERT(segmenter_map_.find(cid) == segmenter_map_.end()); segmenter_map_.emplace(std::piecewise_construct, std::forward_as_tuple(cid), ASSERT(sender_map_.find(cid) == sender_map_.end()); sender_map_.emplace(std::piecewise_construct, std::forward_as_tuple(cid), std::forward_as_tuple(handler_, this, channel)); } void Fifo::DetachChannel(Cid cid) { ASSERT(segmenter_map_.find(cid) != segmenter_map_.end()); segmenter_map_.erase(cid); ASSERT(sender_map_.find(cid) != sender_map_.end()); sender_map_.erase(cid); } void Fifo::OnPacketsReady(Cid cid, int number_packets) { Loading @@ -60,9 +60,9 @@ std::unique_ptr<Fifo::UpperDequeue> Fifo::link_queue_enqueue_callback() { if (channel_id_and_number_packets.second == 0) { next_to_dequeue_and_num_packets.pop(); } auto packet = segmenter_map_.find(channel_id)->second.GetNextPacket(); auto packet = sender_map_.find(channel_id)->second.GetNextPacket(); segmenter_map_.find(channel_id)->second.OnPacketSent(); sender_map_.find(channel_id)->second.OnPacketSent(); if (next_to_dequeue_and_num_packets.empty()) { link_queue_up_end_->UnregisterEnqueue(); link_queue_enqueue_registered_ = false; Loading @@ -80,15 +80,15 @@ void Fifo::try_register_link_queue_enqueue() { } void Fifo::SetChannelRetransmissionFlowControlMode(Cid cid, RetransmissionAndFlowControlModeOption mode) { ASSERT(segmenter_map_.find(cid) != segmenter_map_.end()); segmenter_map_.find(cid)->second.SetChannelRetransmissionFlowControlMode(mode); ASSERT(sender_map_.find(cid) != sender_map_.end()); sender_map_.find(cid)->second.SetChannelRetransmissionFlowControlMode(mode); } DataController* Fifo::GetDataController(Cid cid) { if (segmenter_map_.find(cid) == segmenter_map_.end()) { if (sender_map_.find(cid) == sender_map_.end()) { return nullptr; } return segmenter_map_.find(cid)->second.GetDataController(); return sender_map_.find(cid)->second.GetDataController(); } } // namespace internal Loading
system/gd/l2cap/internal/scheduler_fifo.h +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ class Fifo : public Scheduler { private: LowerQueueUpEnd* link_queue_up_end_; os::Handler* handler_; std::unordered_map<Cid, Sender> segmenter_map_; std::unordered_map<Cid, Sender> sender_map_; std::queue<std::pair<Cid, int>> next_to_dequeue_and_num_packets; bool link_queue_enqueue_registered_ = false; Loading
system/gd/l2cap/internal/sender.h +1 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ class Sender { ~Sender(); /** * Callback from scheduler to indicate that scheduler already dequeued a packet from segmenter's queue. * Callback from scheduler to indicate that scheduler already dequeued a packet from sender's queue. * Segmenter can continue dequeuing from channel queue end. */ void OnPacketSent(); Loading
system/gd/l2cap/internal/sender_test.cc +4 −4 Original line number Diff line number Diff line Loading @@ -71,11 +71,11 @@ class L2capSegmenterTest : public ::testing::Test { .WillRepeatedly(Return(RetransmissionAndFlowControlModeOption::L2CAP_BASIC)); EXPECT_CALL(*mock_channel_, GetCid()).WillRepeatedly(Return(0x41)); EXPECT_CALL(*mock_channel_, GetRemoteCid()).WillRepeatedly(Return(0x41)); segmenter_ = new Sender(queue_handler_, &scheduler_, mock_channel_); sender_ = new Sender(queue_handler_, &scheduler_, mock_channel_); } void TearDown() override { delete segmenter_; delete sender_; queue_handler_->Clear(); user_handler_->Clear(); delete queue_handler_; Loading @@ -88,7 +88,7 @@ class L2capSegmenterTest : public ::testing::Test { os::Handler* queue_handler_ = nullptr; common::BidiQueue<Sender::UpperEnqueue, Sender::UpperDequeue> channel_queue_{10}; std::shared_ptr<testing::MockChannelImpl> mock_channel_; Sender* segmenter_ = nullptr; Sender* sender_ = nullptr; FakeScheduler scheduler_; }; Loading @@ -101,7 +101,7 @@ TEST_F(L2capSegmenterTest, send_packet) { queue_handler_, common::Bind(&L2capSegmenterTest::enqueue_callback, common::Unretained(this))); auto status = future.wait_for(std::chrono::milliseconds(3)); EXPECT_EQ(status, std::future_status::ready); auto packet = segmenter_->GetNextPacket(); auto packet = sender_->GetNextPacket(); EXPECT_NE(packet, nullptr); } Loading