File plugin.hpp
File List > network_latency > rx > plugin.hpp
Go to the documentation of this file
#pragma once
#include "illixr/data_format/latency_data.hpp"
#include "illixr/data_format/serialization/latency.hpp"
#include "illixr/phonebook.hpp"
#include "illixr/switchboard.hpp"
#include "illixr/threadloop.hpp"
#include
#include
#include
#include
#include
#include
namespace ILLIXR {
class MY_EXPORT_API network_latency_rx : public threadloop {
public:
[[maybe_unused]] network_latency_rx(const std::string& name, phonebook* pb);
~network_latency_rx() override;
protected:
skip_option _p_should_skip() override;
void _p_one_iteration() override;
private:
void process_ping(const switchboard::ptr<const data_format::latency_ping>& ping);
static uint64_t get_timestamp_ns();
// Switchboard
const std::shared_ptr<switchboard> switchboard_;
// Buffered reader for receiving pings (tcp_network_backend populates this topic)
switchboard::buffered_reader<data_format::latency_ping> ping_reader_;
// Network writer for sending pongs (transmitted over network by tcp_network_backend)
switchboard::network_writer<data_format::latency_pong> pong_writer_;
// State
std::atomic<uint64_t> pings_received_;
std::optional<uint64_t> last_received_seq_;
};
} // namespace ILLIXR