Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4745170d authored by Hansong Zhang's avatar Hansong Zhang Committed by android-build-merger
Browse files

Merge "L2CAP rename Segmenter to Sender" am: 18639f6b

am: 86b0dec4

Change-Id: Ib16025d1807e55bc08106c03984fd4b7319e89de
parents c287ed98 86b0dec4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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) {}

+12 −12
Original line number Diff line number Diff line
@@ -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) {
@@ -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;
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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();
+4 −4
Original line number Diff line number Diff line
@@ -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_;
@@ -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_;
};

@@ -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);
}