File plugin.hpp
File List > network_latency > tx > 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 "pong_rx/plugin.hpp"
#include
#include
#include
#include
#include
#include
namespace ILLIXR {
class network_latency_tx : public threadloop {
public:
[[maybe_unused]] network_latency_tx(const std::string& name, phonebook* pb);
void start() override;
void stop() override;
protected:
skip_option _p_should_skip() override;
void _p_one_iteration() override;
private:
static uint64_t get_timestamp_ns();
// Switchboard
const std::shared_ptr<switchboard> switchboard_;
// Network writer for sending pings (transmitted over network by tcp_network_backend)
switchboard::network_writer<data_format::latency_ping> ping_writer_;
std::shared_ptr<network_latency_pong_rx> pong_rx_;
// Configuration
std::chrono::milliseconds ping_interval_;
// State
std::atomic<uint64_t> sequence_number_;
std::chrono::steady_clock::time_point last_ping_time_;
};
} // namespace ILLIXR