boilerplate for hs2
This commit is contained in:
parent
6f2fa60394
commit
ee593536a2
@ -43,6 +43,21 @@ target_link_libraries(solanaceae_ngcft1 PUBLIC
|
|||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
|
add_library(solanaceae_ngchs2
|
||||||
|
./solanaceae/ngc_hs2/ngc_hs2.hpp
|
||||||
|
./solanaceae/ngc_hs2/ngc_hs2.cpp
|
||||||
|
)
|
||||||
|
target_include_directories(solanaceae_ngchs2 PUBLIC .)
|
||||||
|
target_compile_features(solanaceae_ngchs2 PUBLIC cxx_std_17)
|
||||||
|
target_link_libraries(solanaceae_ngchs2 PUBLIC
|
||||||
|
solanaceae_ngcft1
|
||||||
|
solanaceae_tox_contacts
|
||||||
|
solanaceae_message3
|
||||||
|
solanaceae_object_store
|
||||||
|
)
|
||||||
|
|
||||||
|
########################################
|
||||||
|
|
||||||
add_library(solanaceae_sha1_ngcft1
|
add_library(solanaceae_sha1_ngcft1
|
||||||
# hacky deps
|
# hacky deps
|
||||||
./solanaceae/ngc_ft1_sha1/mio.hpp
|
./solanaceae/ngc_ft1_sha1/mio.hpp
|
||||||
|
@ -72,5 +72,23 @@ enum class NGCFT1_file_kind : uint32_t {
|
|||||||
// id: sha256
|
// id: sha256
|
||||||
// always of size 16KiB, except if last piece in file
|
// always of size 16KiB, except if last piece in file
|
||||||
TORRENT_V2_PIECE,
|
TORRENT_V2_PIECE,
|
||||||
|
|
||||||
|
// https://gist.github.com/Green-Sky/440cd9817a7114786850eb4c62dc57c3
|
||||||
|
// id: ts start, ts end
|
||||||
|
// content:
|
||||||
|
// - ts start (do we need this? when this is part of the id?)
|
||||||
|
// - ts end (same)
|
||||||
|
// - list size
|
||||||
|
// - ppk
|
||||||
|
// - mid
|
||||||
|
// - ts
|
||||||
|
HS2_INFO_RANGE_TIME = 0x00000f00,
|
||||||
|
// TODO: half open ranges
|
||||||
|
// TODO: id based
|
||||||
|
// TODO: ppk based?
|
||||||
|
|
||||||
|
// id: ppk, mid, ts
|
||||||
|
HS2_SINGLE_MESSAGE,
|
||||||
|
// TODO: message pack
|
||||||
};
|
};
|
||||||
|
|
||||||
|
91
solanaceae/ngc_hs2/ngc_hs2.cpp
Normal file
91
solanaceae/ngc_hs2/ngc_hs2.cpp
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
#include "./ngc_hs2.hpp"
|
||||||
|
|
||||||
|
#include <solanaceae/tox_contacts/tox_contact_model2.hpp>
|
||||||
|
|
||||||
|
NGCHS2::NGCHS2(
|
||||||
|
ToxContactModel2& tcm,
|
||||||
|
ToxEventProviderI& tep,
|
||||||
|
NGCFT1& nft
|
||||||
|
) :
|
||||||
|
_tcm(tcm),
|
||||||
|
_tep_sr(tep.newSubRef(this)),
|
||||||
|
_nft(nft),
|
||||||
|
_nftep_sr(_nft.newSubRef(this))
|
||||||
|
{
|
||||||
|
_tep_sr
|
||||||
|
.subscribe(TOX_EVENT_GROUP_PEER_JOIN)
|
||||||
|
.subscribe(TOX_EVENT_GROUP_PEER_EXIT)
|
||||||
|
;
|
||||||
|
|
||||||
|
_nftep_sr
|
||||||
|
.subscribe(NGCFT1_Event::recv_init)
|
||||||
|
.subscribe(NGCFT1_Event::recv_request)
|
||||||
|
.subscribe(NGCFT1_Event::recv_init)
|
||||||
|
.subscribe(NGCFT1_Event::recv_data)
|
||||||
|
.subscribe(NGCFT1_Event::send_data)
|
||||||
|
.subscribe(NGCFT1_Event::recv_done)
|
||||||
|
.subscribe(NGCFT1_Event::send_done)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
NGCHS2::~NGCHS2(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
float NGCHS2::iterate(float delta) {
|
||||||
|
return 1000.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NGCHS2::onEvent(const Events::NGCFT1_recv_request& e) {
|
||||||
|
if (
|
||||||
|
e.file_kind != NGCFT1_file_kind::HS2_INFO_RANGE_TIME &&
|
||||||
|
e.file_kind != NGCFT1_file_kind::HS2_SINGLE_MESSAGE
|
||||||
|
) {
|
||||||
|
return false; // not for us
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NGCHS2::onEvent(const Events::NGCFT1_recv_init& e) {
|
||||||
|
if (
|
||||||
|
e.file_kind != NGCFT1_file_kind::HS2_INFO_RANGE_TIME &&
|
||||||
|
e.file_kind != NGCFT1_file_kind::HS2_SINGLE_MESSAGE
|
||||||
|
) {
|
||||||
|
return false; // not for us
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NGCHS2::onEvent(const Events::NGCFT1_recv_data&) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NGCHS2::onEvent(const Events::NGCFT1_send_data&) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NGCHS2::onEvent(const Events::NGCFT1_recv_done&) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NGCHS2::onEvent(const Events::NGCFT1_send_done&) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NGCHS2::onToxEvent(const Tox_Event_Group_Peer_Join* e) {
|
||||||
|
const auto group_number = tox_event_group_peer_join_get_group_number(e);
|
||||||
|
const auto peer_number = tox_event_group_peer_join_get_peer_id(e);
|
||||||
|
|
||||||
|
const auto c = _tcm.getContactGroupPeer(group_number, peer_number);
|
||||||
|
assert(c);
|
||||||
|
|
||||||
|
// add to check list with inital cooldown
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NGCHS2::onToxEvent(const Tox_Event_Group_Peer_Exit* e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
44
solanaceae/ngc_hs2/ngc_hs2.hpp
Normal file
44
solanaceae/ngc_hs2/ngc_hs2.hpp
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
//#include <solanaceae/contact/contact_model3.hpp>
|
||||||
|
#include <solanaceae/toxcore/tox_event_interface.hpp>
|
||||||
|
|
||||||
|
//#include <solanaceae/message3/registry_message_model.hpp>
|
||||||
|
|
||||||
|
#include <solanaceae/ngc_ft1/ngcft1.hpp>
|
||||||
|
|
||||||
|
// fwd
|
||||||
|
class ToxContactModel2;
|
||||||
|
|
||||||
|
class NGCHS2 : public ToxEventI, public NGCFT1EventI {
|
||||||
|
ToxContactModel2& _tcm;
|
||||||
|
//Contact3Registry& _cr;
|
||||||
|
//RegistryMessageModelI& _rmm;
|
||||||
|
ToxEventProviderI::SubscriptionReference _tep_sr;
|
||||||
|
NGCFT1& _nft;
|
||||||
|
NGCFT1EventProviderI::SubscriptionReference _nftep_sr;
|
||||||
|
|
||||||
|
public:
|
||||||
|
NGCHS2(
|
||||||
|
ToxContactModel2& tcm,
|
||||||
|
ToxEventProviderI& tep,
|
||||||
|
NGCFT1& nf
|
||||||
|
);
|
||||||
|
|
||||||
|
~NGCHS2(void);
|
||||||
|
|
||||||
|
float iterate(float delta);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool onEvent(const Events::NGCFT1_recv_request&) override;
|
||||||
|
bool onEvent(const Events::NGCFT1_recv_init&) override;
|
||||||
|
bool onEvent(const Events::NGCFT1_recv_data&) override;
|
||||||
|
bool onEvent(const Events::NGCFT1_send_data&) override;
|
||||||
|
bool onEvent(const Events::NGCFT1_recv_done&) override;
|
||||||
|
bool onEvent(const Events::NGCFT1_send_done&) override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool onToxEvent(const Tox_Event_Group_Peer_Join* e) override;
|
||||||
|
bool onToxEvent(const Tox_Event_Group_Peer_Exit* e) override;
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user