diff options
Diffstat (limited to 'testing/experiment/group_chats_test1.c')
-rw-r--r-- | testing/experiment/group_chats_test1.c | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/testing/experiment/group_chats_test1.c b/testing/experiment/group_chats_test1.c new file mode 100644 index 00000000..f66c2d24 --- /dev/null +++ b/testing/experiment/group_chats_test1.c | |||
@@ -0,0 +1,114 @@ | |||
1 | #include "group_chats.h" | ||
2 | #define NUM_CHATS 8 | ||
3 | |||
4 | #ifdef WIN32 | ||
5 | #define c_sleep(x) Sleep(1*x) | ||
6 | #else | ||
7 | #define c_sleep(x) usleep(1000*x) | ||
8 | #endif | ||
9 | Group_Chat *chat; | ||
10 | |||
11 | void print_close(Group_Close *close) | ||
12 | { | ||
13 | uint32_t i, j; | ||
14 | IP_Port p_ip; | ||
15 | printf("___________________CLOSE________________________________\n"); | ||
16 | |||
17 | for (i = 0; i < GROUP_CLOSE_CONNECTIONS; i++) { | ||
18 | printf("ClientID: "); | ||
19 | |||
20 | for (j = 0; j < CLIENT_ID_SIZE; j++) { | ||
21 | printf("%02hhX", close[i].client_id[j]); | ||
22 | } | ||
23 | |||
24 | p_ip = close[i].ip_port; | ||
25 | printf("\nIP: %u.%u.%u.%u Port: %u", p_ip.ip.uint8[0], p_ip.ip.uint8[1], p_ip.ip.uint8[2], p_ip.ip.uint8[3], | ||
26 | ntohs(p_ip.port)); | ||
27 | printf("\nTimestamp: %llu", (long long unsigned int) close[i].last_recv); | ||
28 | printf("\n"); | ||
29 | } | ||
30 | } | ||
31 | |||
32 | void print_group(Group_Chat *chat) | ||
33 | { | ||
34 | uint32_t i, j; | ||
35 | printf("-----------------\nClientID: "); | ||
36 | |||
37 | for (j = 0; j < CLIENT_ID_SIZE; j++) { | ||
38 | printf("%02hhX", chat->self_public_key[j]); | ||
39 | } | ||
40 | |||
41 | printf("\n___________________GROUP________________________________\n"); | ||
42 | |||
43 | for (i = 0; i < chat->numpeers; i++) { | ||
44 | printf("ClientID: "); | ||
45 | |||
46 | for (j = 0; j < CLIENT_ID_SIZE; j++) { | ||
47 | printf("%02hhX", chat->group[i].client_id[j]); | ||
48 | } | ||
49 | |||
50 | printf("\nTimestamp: %llu", (long long unsigned int) chat->group[i].last_recv); | ||
51 | printf("\nlast_pinged: %llu", (long long unsigned int) chat->group[i].last_pinged); | ||
52 | printf("\npingid: %llu", (long long unsigned int) chat->group[i].pingid); | ||
53 | printf("\n"); | ||
54 | } | ||
55 | } | ||
56 | |||
57 | unsigned char *hex_string_to_bin(char hex_string[]) | ||
58 | { | ||
59 | size_t len = strlen(hex_string); | ||
60 | unsigned char *val = malloc(len); | ||
61 | char *pos = hex_string; | ||
62 | int i; | ||
63 | |||
64 | for (i = 0; i < len; ++i, pos += 2) | ||
65 | sscanf(pos, "%2hhx", &val[i]); | ||
66 | |||
67 | return val; | ||
68 | } | ||
69 | |||
70 | void print_message(Group_Chat *chat, int peer_number, uint8_t *message, uint16_t length, void *userdata) | ||
71 | { | ||
72 | printf("%u: %s | %u\n", peer_number, message, length); | ||
73 | } | ||
74 | |||
75 | int main(int argc, char *argv[]) | ||
76 | { | ||
77 | IP ip; | ||
78 | ip.uint32 = 0; | ||
79 | uint32_t i; | ||
80 | |||
81 | chat = new_groupchat(new_networking(ip, 12745)); | ||
82 | |||
83 | if (chat == 0) | ||
84 | exit(1); | ||
85 | |||
86 | networking_registerhandler(chat->net, 48, &handle_groupchatpacket, chat); | ||
87 | |||
88 | callback_groupmessage(chat, &print_message, 0); | ||
89 | |||
90 | printf("ok\n"); | ||
91 | IP_Port bootstrap_ip_port; | ||
92 | bootstrap_ip_port.port = htons(atoi(argv[2])); | ||
93 | /* bootstrap_ip_port.ip.c[0] = 127; | ||
94 | * bootstrap_ip_port.ip.c[1] = 0; | ||
95 | * bootstrap_ip_port.ip.c[2] = 0; | ||
96 | * bootstrap_ip_port.ip.c[3] = 1; */ | ||
97 | bootstrap_ip_port.ip.uint32 = inet_addr(argv[1]); | ||
98 | |||
99 | chat_bootstrap(chat, bootstrap_ip_port, hex_string_to_bin(argv[3])); | ||
100 | |||
101 | while (1) { | ||
102 | |||
103 | networking_poll(chat->net); | ||
104 | do_groupchat(chat); | ||
105 | printf("%u ", chat->numpeers); | ||
106 | printf("%u\n", group_sendmessage(chat, "Install Gentoo", sizeof("Install Gentoo"))); | ||
107 | //print_close(chat->close); | ||
108 | // print_group(chat); | ||
109 | |||
110 | c_sleep(100); | ||
111 | } | ||
112 | |||
113 | return 0; | ||
114 | } | ||