solanaceae_ngc_ft1/solanaceae/ngc_hs2/ngc_hs2_sigma.hpp

79 lines
1.9 KiB
C++
Raw Normal View History

#pragma once
#include <solanaceae/toxcore/tox_event_interface.hpp>
#include <solanaceae/contact/contact_model3.hpp>
#include <solanaceae/message3/registry_message_model.hpp>
#include <solanaceae/ngc_ft1/ngcft1.hpp>
#include <entt/container/dense_map.hpp>
2024-11-22 13:51:25 +01:00
#include <solanaceae/util/span.hpp>
#include <vector>
2024-12-06 22:41:05 +01:00
#include <deque>
2024-11-22 13:51:25 +01:00
// fwd
class ToxContactModel2;
2024-11-22 13:51:25 +01:00
struct TimeRangeRequest {
2024-11-22 13:51:25 +01:00
uint64_t ts_start{0};
uint64_t ts_end{0};
};
2024-12-07 11:38:31 +01:00
class NGCHS2Sigma : public RegistryMessageModelEventI, public NGCFT1EventI {
Contact3Registry& _cr;
RegistryMessageModelI& _rmm;
ToxContactModel2& _tcm;
NGCFT1& _nft;
NGCFT1EventProviderI::SubscriptionReference _nftep_sr;
2024-11-22 13:51:25 +01:00
float _iterate_heat {0.f};
constexpr static float _iterate_cooldown {1.22f}; // sec
// open/running range requests (by c)
2024-11-22 13:51:25 +01:00
// comp on peer c
// open/running range responses (by c)
2024-11-22 13:51:25 +01:00
// comp on peer c
// limit to 2 uploads per peer simultaniously
// TODO: increase for prod (4?) or maybe even lower?
2024-11-22 13:51:25 +01:00
// currently per type
constexpr static size_t _max_parallel_per_peer {2};
2024-11-22 13:51:25 +01:00
constexpr static bool _only_send_self_observed {true};
constexpr static int64_t _max_time_into_past_default {60*15}; // s
public:
2024-12-07 11:38:31 +01:00
NGCHS2Sigma(
Contact3Registry& cr,
RegistryMessageModelI& rmm,
ToxContactModel2& tcm,
2024-12-08 14:48:24 +01:00
NGCFT1& nft
);
2024-12-07 11:38:31 +01:00
~NGCHS2Sigma(void);
float iterate(float delta);
void handleTimeRange(Contact3Handle c, const Events::NGCFT1_recv_request&);
// msg reg contact
// time ranges
2024-12-06 22:41:05 +01:00
[[nodiscard]] std::vector<uint8_t> buildChatLogFileRange(Contact3Handle c, uint64_t ts_start, uint64_t ts_end);
protected:
bool onEvent(const Message::Events::MessageConstruct&) override;
bool onEvent(const Message::Events::MessageUpdated&) override;
bool onEvent(const Message::Events::MessageDestory&) override;
protected:
bool onEvent(const Events::NGCFT1_recv_request&) override;
bool onEvent(const Events::NGCFT1_send_data&) override;
bool onEvent(const Events::NGCFT1_send_done&) override;
};