blob: 106df7ba46b6cce7d3272e0c6b316326702ff796 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#pragma once
#include "routing.h"
#define PEER_ENOMEM 1
#define PEER_EFULL 1
struct infohash {
union {
uint32_t inner[5];
char inner_b[20];
};
};
#define PEERS_PER_HASH 8
struct peer_entry {
struct infohash key;
struct addr value[PEERS_PER_HASH];
size_t value_len;
bool set;
};
extern struct peer_status {
size_t peers;
size_t hashes;
} peer_status;
extern struct peer_entry* peer_table;
extern size_t peer_table_size;
extern size_t peer_table_load;
int allocate_hashtable();
int add_peer(struct infohash* key, struct addr* peer);
void get_peers(struct infohash* infohash, struct addr *peers[PEERS_PER_HASH], size_t *peers_len);
|