summaryrefslogtreecommitdiff
path: root/src/peers.h
blob: 624cb215a851b159bb4833b6ce31cbaef2af9134 (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
#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_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);