20 #include <boost/asio.hpp>
21 #include <boost/bind.hpp>
55 short port, uint64_t tsi,
unsigned short mtu,
57 boost::asio::io_service& io_service);
70 void enable_ipsec( uint32_t spi,
const std::string& aes_key);
85 uint16_t
send(
const std::string& content_location,
86 const std::string& content_type,
107 void send_next_packet();
108 void fdt_send_tick();
110 void file_transmitted(uint32_t toi);
112 void handle_send_to(
const boost::system::error_code& error);
113 boost::asio::ip::udp::socket _socket;
114 boost::asio::ip::udp::endpoint _endpoint;
115 boost::asio::io_service& _io_service;
116 boost::asio::deadline_timer _send_timer;
117 boost::asio::deadline_timer _fdt_timer;
122 std::unique_ptr<LibFlute::FileDeliveryTable> _fdt;
123 std::map<uint32_t, std::shared_ptr<LibFlute::File>> _files;
124 std::mutex _files_mutex;
126 unsigned _fdt_repeat_interval = 5;
129 uint32_t _max_payload;
133 std::string _mcast_address;
135 uint32_t _rate_limit = 0;
uint64_t seconds_since_epoch()
Convenience function to get the current timestamp for expiry calculation.
virtual ~Transmitter()
Default destructor.
std::function< void(uint32_t)> completion_callback_t
Definition of a file transmission completion callback function that can be registered through ::regis...
uint16_t send(const std::string &content_location, const std::string &content_type, uint32_t expires, char *data, size_t length)
Transmit a file.
void enable_ipsec(uint32_t spi, const std::string &aes_key)
Enable IPSEC ESP encryption of FLUTE payloads.
void register_completion_callback(completion_callback_t cb)
Register a callback for file transmission completion notifications.
Transmitter(const std::string &address, short port, uint64_t tsi, unsigned short mtu, uint32_t rate_limit, boost::asio::io_service &io_service)
Default constructor.