fix chunk want duplicate hashes, outgoing requests are now prioritized torwards peers we get more data from

This commit is contained in:
2023-01-19 19:43:00 +01:00
parent 294a427eb0
commit 613ae14530
6 changed files with 163 additions and 46 deletions

View File

@@ -33,6 +33,8 @@ struct ToxClient {
std::string getOwnAddress(void) const;
std::string_view getGroupPeerName(uint32_t group_number, uint32_t peer_number) const;
template<typename FN>
void forEachGroup(FN&& fn) const {
for (const auto& it : _groups) {
@@ -43,7 +45,8 @@ struct ToxClient {
template<typename FN>
void forEachGroupPeer(uint32_t group_number, FN&& fn) const {
if (_groups.count(group_number)) {
for (const auto [peer_number, connection_status] : _groups.at(group_number)) {
for (const auto& [peer_number, peer] : _groups.at(group_number)) {
const auto& [connection_status, name] = peer;
fn(peer_number, connection_status);
}
}
@@ -52,6 +55,8 @@ struct ToxClient {
public: // tox callbacks
void onToxSelfConnectionStatus(TOX_CONNECTION connection_status);
void onToxFriendRequest(const uint8_t* public_key, std::string_view message);
void onToxGroupPeerName(uint32_t group_number, uint32_t peer_id, std::string_view name);
void onToxGroupPeerConnection(uint32_t group_number, uint32_t peer_id, TOX_CONNECTION connection_status);
void onToxGroupCustomPacket(uint32_t group_number, uint32_t peer_id, const uint8_t *data, size_t length);
void onToxGroupCustomPrivatePacket(uint32_t group_number, uint32_t peer_id, const uint8_t *data, size_t length);
void onToxGroupInvite(uint32_t friend_number, const uint8_t* invite_data, size_t invite_length, std::string_view group_name);
@@ -87,6 +92,10 @@ struct ToxClient {
// key groupid, value set of peer ids
//std::map<uint32_t, std::set<uint32_t>> _groups;
std::map<uint32_t, std::map<uint32_t, Tox_Connection>> _groups;
struct Peer {
Tox_Connection connection_status {Tox_Connection::TOX_CONNECTION_NONE};
std::string name;
};
std::map<uint32_t, std::map<uint32_t, Peer>> _groups;
};