diff options
Diffstat (limited to 'third_party/libwebrtc/test/network/feedback_generator.h')
-rw-r--r-- | third_party/libwebrtc/test/network/feedback_generator.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/third_party/libwebrtc/test/network/feedback_generator.h b/third_party/libwebrtc/test/network/feedback_generator.h new file mode 100644 index 0000000000..ecd4597d3f --- /dev/null +++ b/third_party/libwebrtc/test/network/feedback_generator.h @@ -0,0 +1,60 @@ +/* + * Copyright 2019 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ +#ifndef TEST_NETWORK_FEEDBACK_GENERATOR_H_ +#define TEST_NETWORK_FEEDBACK_GENERATOR_H_ + +#include <cstdint> +#include <queue> +#include <utility> +#include <vector> + +#include "api/transport/network_types.h" +#include "api/transport/test/feedback_generator_interface.h" +#include "call/simulated_network.h" +#include "test/network/network_emulation.h" +#include "test/network/network_emulation_manager.h" +#include "test/time_controller/simulated_time_controller.h" + +namespace webrtc { + +class FeedbackGeneratorImpl + : public FeedbackGenerator, + public TwoWayFakeTrafficRoute<SentPacket, std::vector<PacketResult>>:: + TrafficHandlerInterface { + public: + explicit FeedbackGeneratorImpl(Config config); + Timestamp Now() override; + void Sleep(TimeDelta duration) override; + void SendPacket(size_t size) override; + std::vector<TransportPacketsFeedback> PopFeedback() override; + + void SetSendConfig(BuiltInNetworkBehaviorConfig config) override; + void SetReturnConfig(BuiltInNetworkBehaviorConfig config) override; + + void SetSendLinkCapacity(DataRate capacity) override; + + void OnRequest(SentPacket packet, Timestamp arrival_time) override; + void OnResponse(std::vector<PacketResult> packet_results, + Timestamp arrival_time) override; + + private: + Config conf_; + ::webrtc::test::NetworkEmulationManagerImpl net_; + SimulatedNetwork* const send_link_; + SimulatedNetwork* const ret_link_; + TwoWayFakeTrafficRoute<SentPacket, std::vector<PacketResult>> route_; + + std::queue<SentPacket> sent_packets_; + std::vector<PacketResult> received_packets_; + std::vector<TransportPacketsFeedback> feedback_; + int64_t sequence_number_ = 1; +}; +} // namespace webrtc +#endif // TEST_NETWORK_FEEDBACK_GENERATOR_H_ |