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

Commit 18639f6b authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "L2CAP rename Segmenter to Sender"

parents e62763dc 55abd09d
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);
}