diff --git a/core/DHT.h b/core/DHT.h new file mode 100644 index 00000000..4ef80fc5 --- /dev/null +++ b/core/DHT.h @@ -0,0 +1,87 @@ +#include +#include +#include +#include +#include + +#ifdef WIN32 + + +//Put win32 includes here + + +#else //Linux includes + +#include +#include +#include +#include + +#endif + + +typedef union +{ + uint8_t c[4]; + uint16_t s[2]; + uint32_t i; +}IP; + +typedef struct +{ + IP ip; + uint16_t port; + +}IP_Port; + + +typedef struct +{ + char client_id[32]; + IP_Port ip_port; + uint32_t timestamp; + +}Client_data; + + +typedef struct +{ + char client_id[32]; + Client_data client_list[8]; + +}Friend; + + + +//Add a new friend to the friends list +//client_id must be 32 bytes long. +void addfriend(char * client_id); + +//Delete a friend from the friends list +//client_id must be 32 bytes long. +//returns 0 if success +//returns 1 if failure (client_id not in friends list) +char delfriend(char * client_id); + +//Get ip of friend +//client_id must be 32 bytes long. +//ip must be 4 bytes long. +//port must be 2 bytes long. +//returns ip if success +//returns ip of 0 if failure (This means the friend is either offline of we have not found him yet.) +IP_Port getfriendip(char * client_id); + + +//Run this function at least a couple times per second (It's the main loop) +void doDHT(); + + + + + +//Global variables + +Client_data client_list[32]; + +//Let's start with a static array for testing. +Friend friends_list[256]