| // Copyright (c) 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef QUICHE_QUIC_QUARTC_COUNTING_PACKET_FILTER_H_ |
| #define QUICHE_QUIC_QUARTC_COUNTING_PACKET_FILTER_H_ |
| |
| #include <string> |
| |
| #include "net/third_party/quiche/src/quic/test_tools/simulator/packet_filter.h" |
| #include "net/third_party/quiche/src/quic/test_tools/simulator/port.h" |
| #include "net/third_party/quiche/src/quic/test_tools/simulator/simulator.h" |
| |
| namespace quic { |
| namespace simulator { |
| |
| // Simple packet filter which drops the first N packets it observes. |
| class CountingPacketFilter : public simulator::PacketFilter { |
| public: |
| CountingPacketFilter(simulator::Simulator* simulator, |
| const std::string& name, |
| simulator::Endpoint* endpoint) |
| : PacketFilter(simulator, name, endpoint) {} |
| |
| void set_packets_to_drop(int count) { packets_to_drop_ = count; } |
| |
| protected: |
| bool FilterPacket(const simulator::Packet& packet) override { |
| if (packets_to_drop_ > 0) { |
| --packets_to_drop_; |
| return false; |
| } |
| return true; |
| } |
| |
| private: |
| int packets_to_drop_ = 0; |
| }; |
| |
| } // namespace simulator |
| } // namespace quic |
| |
| #endif // QUICHE_QUIC_QUARTC_COUNTING_PACKET_FILTER_H_ |