PokerUnicorn
Loading...
Searching...
No Matches
server.h
Go to the documentation of this file.
1/*
2 * PokerUnicorn Server
3 * This project uses test network, NO real coin or NO real money involved.
4 * Copyright (C) 2023, Oğuzhan Eroğlu <meowingcate@gmail.com> (https://meowingcat.io)
5 * Licensed under GPLv3 License
6 * See LICENSE for more info
7 */
8
9#pragma once
10
15
21
22#include <stdbool.h>
23#include <stdint.h>
24
25#include <openssl/ssl.h>
26#include <libpq-fe.h>
27
28#include "ref.h"
29#include "sugar.h"
30#include "string.h"
31#include "account.h"
32#include "card.h"
33#include "poker.h"
34#include "websocket.h"
35#include "eventloop.h"
36#include "auth.h"
37
38typedef struct pkrsrv_server_packet_frame_header pkrsrv_server_packet_frame_header_t;
39typedef struct pkrsrv_server_packet_frame_login pkrsrv_server_packet_frame_login_t;
40typedef struct pkrsrv_server_packet_frame_login_res pkrsrv_server_packet_frame_login_res_t;
41typedef struct pkrsrv_server_packet_frame_login_res_account pkrsrv_server_packet_frame_login_res_account_t;
42typedef struct pkrsrv_server_packet_frame_signup pkrsrv_server_packet_frame_signup_t;
43typedef struct pkrsrv_server_packet_frame_signup_res pkrsrv_server_packet_frame_signup_res_t;
44typedef struct pkrsrv_server_packet_frame_signup_res_account pkrsrv_server_packet_frame_signup_res_account_t;
45typedef struct pkrsrv_server_packet_frame_auth_session pkrsrv_server_packet_frame_auth_session_t;
46typedef struct pkrsrv_server_packet_frame_auth_session_res pkrsrv_server_packet_frame_auth_session_res_t;
47typedef struct pkrsrv_server_packet_frame_auth_session_res_account pkrsrv_server_packet_frame_auth_session_res_account_t;
48typedef struct pkrsrv_server_packet_frame_account pkrsrv_server_packet_frame_account_t;
49typedef struct pkrsrv_server_packet_frame_enter pkrsrv_server_packet_frame_enter_t;
50typedef struct pkrsrv_server_packet_frame_enter_res pkrsrv_server_packet_frame_enter_res_t;
51typedef struct pkrsrv_server_packet_frame_leave pkrsrv_server_packet_frame_leave_t;
52typedef struct pkrsrv_server_packet_frame_leave_res pkrsrv_server_packet_frame_leave_res_t;
53typedef struct pkrsrv_server_packet_frame_join pkrsrv_server_packet_frame_join_t;
54typedef struct pkrsrv_server_packet_frame_join_res pkrsrv_server_packet_frame_join_res_t;
55typedef struct pkrsrv_server_packet_frame_unjoin pkrsrv_server_packet_frame_unjoin_t;
56typedef struct pkrsrv_server_packet_frame_unjoin_res pkrsrv_server_packet_frame_unjoin_res_t;
57typedef struct pkrsrv_server_packet_frame_poker_info pkrsrv_server_packet_frame_poker_info_t;
58typedef struct pkrsrv_server_packet_frame_poker_info_player pkrsrv_server_packet_frame_poker_info_player_t;
59typedef struct pkrsrv_server_packet_frame_poker_state pkrsrv_server_packet_frame_poker_state_t;
60typedef struct pkrsrv_server_packet_frame_poker_state_player pkrsrv_server_packet_frame_poker_state_player_t;
61typedef struct pkrsrv_server_packet_frame_poker_action pkrsrv_server_packet_frame_poker_action_t;
62typedef struct pkrsrv_server_packet_frame_poker_action_reflection pkrsrv_server_packet_frame_poker_action_reflection_t;
63typedef struct pkrsrv_server_packet_frame_poker_end pkrsrv_server_packet_frame_poker_end_t;
64typedef struct pkrsrv_server_packet_frame_poker_end_score pkrsrv_server_packet_frame_poker_end_score_t;
65typedef struct pkrsrv_server_packet_frame_poker_restarted pkrsrv_server_packet_frame_poker_restarted_t;
66typedef struct pkrsrv_server_packet_frame_unjoined pkrsrv_server_packet_frame_unjoined_t;
67typedef struct pkrsrv_server_packet_frame_get_tables pkrsrv_server_packet_frame_get_tables_t;
68typedef struct pkrsrv_server_packet_frame_tables pkrsrv_server_packet_frame_tables_t;
69typedef struct pkrsrv_server_packet_frame_get_sessions pkrsrv_server_packet_frame_get_sessions_t;
70typedef struct pkrsrv_server_packet_frame_sessions pkrsrv_server_packet_frame_sessions_t;
71typedef struct pkrsrv_server_packet_frame_table pkrsrv_server_packet_frame_table_t;
72typedef struct pkrsrv_server_packet_frame_update_account pkrsrv_server_packet_frame_update_account_t;
73typedef struct pkrsrv_server_packet_frame_update_account_res pkrsrv_server_packet_frame_update_account_res_t;
74typedef struct pkrsrv_server_packet_frame_server_info pkrsrv_server_packet_frame_server_info_t;
75typedef struct pkrsrv_server pkrsrv_server_t;
76typedef struct pkrsrv_server_clients pkrsrv_server_clients_t;
77typedef struct pkrsrv_server_client pkrsrv_server_client_t;
78typedef uint32_t pkrsrv_server_opcode_t;
79
122
128
129typedef void (*opcode_handler_t)(
130 pkrsrv_server_client_t* client,
132);
133
134struct __attribute__((__packed__))
135pkrsrv_server_packet_frame_header {
136 uint32_t opcode;
137 uint32_t length;
138};
139
143struct __attribute__((__packed__))
144pkrsrv_server_packet_frame_login {
145 uint16_t id_token_length;
146 uint16_t password_length;
147};
148
152struct __attribute__((__packed__))
153pkrsrv_server_packet_frame_login_res {
154 uint8_t is_ok;
155 uint8_t is_logined;
156 uint16_t auth_token_length;
157};
158struct __attribute__((__packed__))
159pkrsrv_server_packet_frame_login_res_account {
160 uint16_t xmr_deposit_address_length;
161 uint16_t id_token_length;
162 uint16_t name_length;
163 uint32_t avatar_length;
164 uint64_t id;
165 uint64_t balance;
166};
167
171struct __attribute__((__packed__))
172pkrsrv_server_packet_frame_signup {
173 uint16_t id_token_length;
174 uint16_t password_length;
175 uint16_t name_length;
176 uint32_t avatar_length;
177};
178
182struct __attribute__((__packed__))
183pkrsrv_server_packet_frame_signup_res {
184 uint8_t is_ok;
185 uint8_t is_logined;
186 uint16_t status;
187 uint16_t auth_token_length;
188};
189struct __attribute__((__packed__))
190pkrsrv_server_packet_frame_signup_res_account {
191 uint16_t id_token_length;
192 uint16_t name_length;
193 uint32_t avatar_length;
194 uint16_t xmr_deposit_address_length;
195 uint64_t id;
196 uint64_t balance;
197};
198
202struct __attribute__((__packed__))
203pkrsrv_server_packet_frame_auth_session {
204 uint16_t token_length;
205};
209struct __attribute__((__packed__))
210pkrsrv_server_packet_frame_auth_session_res {
211 uint8_t is_ok;
212 uint8_t is_logined;
213};
214struct __attribute__((__packed__))
215pkrsrv_server_packet_frame_auth_session_res_account {
216 uint16_t xmr_deposit_address_length;
217 uint16_t id_token_length;
218 uint16_t name_length;
219 uint32_t avatar_length;
220 uint64_t id;
221 uint64_t balance;
222};
223
227struct __attribute__((__packed__))
228pkrsrv_server_packet_frame_account {
229 uint16_t xmr_deposit_address_length;
230 uint16_t id_token_length;
231 uint16_t name_length;
232 uint32_t avatar_length;
233 uint64_t id;
234 uint64_t balance;
235};
236
240struct __attribute__((__packed__))
241pkrsrv_server_packet_frame_enter {
242 uint64_t table_id;
243};
244
248struct __attribute__((__packed__))
249pkrsrv_server_packet_frame_enter_res {
250 uint64_t table_id;
251 uint8_t is_ok;
252};
253
257struct __attribute__((__packed__))
258pkrsrv_server_packet_frame_leave {
259 uint64_t table_id;
260};
261
265struct __attribute__((__packed__))
266pkrsrv_server_packet_frame_leave_res {
267 uint64_t table_id;
268 uint8_t is_ok;
269};
270
274struct __attribute__((__packed__))
275pkrsrv_server_packet_frame_join {
276 uint64_t table_id;
277 uint8_t position;
278 uint64_t enterance_amount;
279};
280
284struct __attribute__((__packed__))
285pkrsrv_server_packet_frame_join_res {
286 uint64_t table_id;
287 uint8_t is_ok;
288};
289
293struct __attribute__((__packed__))
294pkrsrv_server_packet_frame_unjoin {
295 uint64_t table_id;
296};
297
301struct __attribute__((__packed__))
302pkrsrv_server_packet_frame_unjoin_res {
303 uint64_t table_id;
304 uint8_t is_ok;
305};
306
310struct __attribute__((__packed__))
311pkrsrv_server_packet_frame_poker_info {
312 uint16_t name_length;
313 uint16_t players_length;
314 uint64_t table_id;
315 uint16_t max_players;
316 uint16_t action_timeout;
317 uint64_t small_blind;
318 uint64_t big_blind;
319 uint64_t enterance_min;
320 uint64_t enterance_max;
321};
322
323struct __attribute__((__packed__))
324pkrsrv_server_packet_frame_poker_info_player {
325 uint16_t name_length;
326 uint32_t avatar_length;
327 uint64_t id;
328 uint8_t position;
329 uint8_t is_playing;
330 uint8_t is_dealt;
331 uint8_t is_allin;
332 uint8_t is_folded;
333 uint8_t is_left;
334 uint64_t balance;
335};
336
340struct __attribute__((__packed__))
341pkrsrv_server_packet_frame_poker_state {
342 uint16_t players_length;
343 uint64_t table_id;
344 uint16_t state;
345 uint8_t is_playing;
346 uint8_t cards[5];
347 uint8_t position;
348 uint8_t playing_position;
349 uint8_t is_dealt;
350 uint8_t hand_cards[2];
351 uint64_t balance;
352 uint64_t bet;
353 uint64_t current_raise;
354 uint64_t current_bet;
355 uint64_t pot_amount;
356 uint64_t starting_time;
357};
358
359struct __attribute__((__packed__))
360pkrsrv_server_packet_frame_poker_state_player {
361 uint16_t name_length;
362 uint64_t id;
363 uint8_t position;
364 uint8_t is_playing;
365 uint8_t is_dealt;
366 uint8_t is_allin;
367 uint8_t is_folded;
368 uint8_t is_left;
369 uint64_t balance;
370};
371
375struct __attribute__((__packed__))
376pkrsrv_server_packet_frame_poker_action {
377 uint64_t table_id;
378 uint16_t action_kind;
379 uint64_t amount;
380};
381
386struct __attribute__((__packed__))
387pkrsrv_server_packet_frame_poker_action_reflection {
388 uint64_t table_id;
389 uint64_t account_id;
390 uint16_t action_kind;
391 uint64_t amount;
392};
393
397struct __attribute__((__packed__))
398pkrsrv_server_packet_frame_poker_end {
399 uint64_t table_id;
400 uint64_t winner_account_id;
401 uint8_t scores_length;
402 uint64_t earned_amount;
403};
404
405struct __attribute__((__packed__))
406pkrsrv_server_packet_frame_poker_end_score {
407 uint64_t bet_diff_length;
408 uint64_t account_id;
409};
410
414struct __attribute__((__packed__))
415pkrsrv_server_packet_frame_poker_restarted {
416 uint64_t table_id;
417};
418
422struct __attribute__((__packed__))
423pkrsrv_server_packet_frame_unjoined {
424 uint64_t table_id;
425 uint32_t reason;
426};
427
431struct __attribute__((__packed__))
432pkrsrv_server_packet_frame_get_sessions {
433 uint16_t offset;
434 uint16_t length;
435};
436
440struct __attribute__((__packed__))
441pkrsrv_server_packet_frame_sessions {
442 uint16_t offset;
443 uint16_t length;
444};
445
449struct __attribute__((__packed__))
450pkrsrv_server_packet_frame_get_tables {
451 uint16_t offset;
452 uint16_t length;
453};
454
458struct __attribute__((__packed__))
459pkrsrv_server_packet_frame_tables {
460 uint16_t offset;
461 uint16_t length;
462};
463
467struct __attribute__((__packed__))
468pkrsrv_server_packet_frame_table {
469 uint16_t name_length;
470 uint64_t id;
471 uint16_t max_players;
472 uint16_t players_count;
473 uint16_t watchers_count;
474 uint64_t small_blind;
475 uint64_t big_blind;
476};
477
481struct __attribute__((__packed__))
482pkrsrv_server_packet_frame_server_info {
483 uint64_t build_number;
484 uint16_t version_length;
485 uint16_t revision_length;
486 uint16_t compiler_length;
487};
488
492struct __attribute__((__packed__))
493pkrsrv_server_packet_frame_update_account {
494 uint16_t name_length;
495 uint32_t avatar_length;
496};
497
501struct __attribute__((__packed__))
502pkrsrv_server_packet_frame_update_account_res {
503 uint8_t is_ok;
504 uint8_t is_avatar_too_big;
505};
506
507// * <API event types>
508
509typedef struct pkrsrv_server_packet_login {
510 pkrsrv_string_t* id_token;
511 pkrsrv_string_t* password;
513
514typedef struct pkrsrv_server_packet_signup {
515 pkrsrv_string_t* id_token;
516 pkrsrv_string_t* password;
517 pkrsrv_string_t* name;
519 pkrsrv_string_t* avatar;
521
522typedef struct pkrsrv_server_packet_auth_session {
523 pkrsrv_string_t* token;
525
526typedef struct pkrsrv_server_packet_enter {
527 uint64_t table_id;
529
530typedef struct pkrsrv_server_packet_leave {
531 uint64_t table_id;
533
534typedef struct pkrsrv_server_packet_join {
535 uint64_t table_id;
537 uint8_t position;
539
540typedef struct pkrsrv_server_packet_unjoin {
541 uint64_t table_id;
543
544typedef struct pkrsrv_server_packet_poker_action {
545 uint64_t table_id;
546 uint16_t action_kind;
547 uint64_t amount;
549
550typedef struct pkrsrv_server_packet_get_tables {
551 uint16_t offset;
552 uint16_t length;
554
555typedef struct pkrsrv_server_packet_get_sessions {
556 uint16_t offset;
557 uint16_t length;
559
560typedef struct pkrsrv_server_packet_json {
561 pkrsrv_string_t* json;
563
564typedef struct pkrsrv_server_packet_update_account {
565 pkrsrv_string_t* name;
566 pkrsrv_string_t* avatar;
568
569// * </API event types>
570
571typedef struct on_client_connected_params {
572 void* owner;
573 pkrsrv_server_client_t* client;
575typedef struct on_client_disconnected_params {
576 void* owner;
577 pkrsrv_server_client_t* client;
579typedef struct on_client_meowed_params {
580 void* owner;
581 pkrsrv_server_client_t* client;
583typedef struct on_client_enter_params {
584 void* owner;
585 pkrsrv_server_client_t* client;
588typedef struct on_client_leave_params {
589 void* owner;
590 pkrsrv_server_client_t* client;
593typedef struct on_client_join_params {
594 void* owner;
595 pkrsrv_server_client_t* client;
598typedef struct on_client_unjoin_params {
599 void* owner;
600 pkrsrv_server_client_t* client;
603typedef struct on_client_login_params {
604 void* owner;
605 pkrsrv_server_client_t* client;
608typedef struct on_client_signup_params {
609 void* owner;
610 pkrsrv_server_client_t* client;
613typedef struct on_client_auth_session_params {
614 void* owner;
615 pkrsrv_server_client_t* client;
618typedef struct on_client_get_account_params {
619 void* owner;
620 pkrsrv_server_client_t* client;
622typedef struct on_client_action_params {
623 void* owner;
624 pkrsrv_server_client_t* client;
627typedef struct on_client_get_tables_params {
628 void* owner;
629 pkrsrv_server_client_t* client;
632typedef struct on_client_get_sessions_params {
633 void* owner;
634 pkrsrv_server_client_t* client;
637typedef struct on_client_update_account_params {
638 void* owner;
639 pkrsrv_server_client_t* client;
642typedef struct on_client_json_params {
643 void* owner;
644 pkrsrv_server_client_t* client;
647
654 void *owner;
655 pkrsrv_eventloop_t* eventloop;
656 int port;
660 pkrsrv_server_clients_t* clients;
661 SSL_CTX* ssl_ctx;
662 void (*on_client_connected)(pkrsrv_eventloop_task_t* task);
663 void (*on_client_disconnected)(pkrsrv_eventloop_task_t* task);
664 void (*on_client_meowed)(pkrsrv_eventloop_task_t* task);
665 void (*on_client_login)(pkrsrv_eventloop_task_t* task);
666 void (*on_client_signup)(pkrsrv_eventloop_task_t* task);
667 void (*on_client_auth_session)(pkrsrv_eventloop_task_t* task);
668 void (*on_client_get_account)(pkrsrv_eventloop_task_t* task);
669 void (*on_client_enter)(pkrsrv_eventloop_task_t* task);
670 void (*on_client_leave)(pkrsrv_eventloop_task_t* task);
671 void (*on_client_join)(pkrsrv_eventloop_task_t* task);
672 void (*on_client_unjoin)(pkrsrv_eventloop_task_t* task);
673 void (*on_client_action)(pkrsrv_eventloop_task_t* task);
674 void (*on_client_get_tables)(pkrsrv_eventloop_task_t* task);
675 void (*on_client_get_sessions)(pkrsrv_eventloop_task_t* task);
676 void (*on_client_update_account)(pkrsrv_eventloop_task_t* task);
677 void (*on_client_json)(pkrsrv_eventloop_task_t* task);
678 pthread_mutex_t mutex;
679 pthread_t thread;
681};
682
684 pkrsrv_server_client_t* prev;
685 pkrsrv_server_client_t* next;
686 pkrsrv_server_client_t* terminal;
688};
689
710
711int pkrsrv_server_ssl_read(SSL* ssl, void* buffer, ssize_t length);
712int pkrsrv_server_ssl_write(SSL* ssl, void* buffer, ssize_t length);
713
714int pkrsrv_server_net_read(pkrsrv_server_client_t* client, void* buffer, ssize_t length);
715int pkrsrv_server_net_write(pkrsrv_server_client_t* client, void* buffer, ssize_t length);
716
718 void* owner;
719 int port;
721 pkrsrv_eventloop_t* eventloop;
723 void (*on_client_connected)(pkrsrv_eventloop_task_t* task);
724 void (*on_client_disconnected)(pkrsrv_eventloop_task_t* task);
725 void (*on_client_meowed)(pkrsrv_eventloop_task_t* task);
726 void (*on_client_login)(pkrsrv_eventloop_task_t* task);
727 void (*on_client_signup)(pkrsrv_eventloop_task_t* task);
728 void (*on_client_auth_session)(pkrsrv_eventloop_task_t* task);
729 void (*on_client_get_account)(pkrsrv_eventloop_task_t* task);
730 void (*on_client_enter)(pkrsrv_eventloop_task_t* task);
731 void (*on_client_leave)(pkrsrv_eventloop_task_t* task);
732 void (*on_client_join)(pkrsrv_eventloop_task_t* task);
733 void (*on_client_unjoin)(pkrsrv_eventloop_task_t* task);
734 void (*on_client_action)(pkrsrv_eventloop_task_t* task);
735 void (*on_client_get_tables)(pkrsrv_eventloop_task_t* task);
736 void (*on_client_get_sessions)(pkrsrv_eventloop_task_t* task);
737 void (*on_client_update_account)(pkrsrv_eventloop_task_t* task);
738 void (*on_client_json)(pkrsrv_eventloop_task_t* task);
739};
740typedef struct pkrsrv_server_new_params pkrsrv_server_new_params_t;
741
745pkrsrv_server_t* pkrsrv_server_new(pkrsrv_server_new_params_t params);
749void pkrsrv_server_start(pkrsrv_server_t* server);
753void pkrsrv_server_listen(pkrsrv_server_t* server);
757void pkrsrv_server_free(pkrsrv_server_t* server);
758
759pkrsrv_server_clients_t* pkrsrv_server_clients_new();
760void pkrsrv_server_add_client(pkrsrv_server_t* server, pkrsrv_server_client_t* client);
761void pkrsrv_server_add_client__ts(pkrsrv_server_t* server, pkrsrv_server_client_t* client);
762void pkrsrv_server_remove_client(pkrsrv_server_t* server, pkrsrv_server_client_t* client);
763void pkrsrv_server_remove_client__ts(pkrsrv_server_t* server, pkrsrv_server_client_t* client);
764pkrsrv_server_client_t* pkrsrv_server_client_new(pkrsrv_server_t* server);
765void pkrsrv_server_client_free(pkrsrv_server_client_t* client);
766
767static void client_handler(pkrsrv_server_client_t* client);
768static void receive_packet(pkrsrv_server_client_t* client);
769static void receive_websocket_packet(pkrsrv_server_client_t* client);
770static bool send_packet(pkrsrv_server_client_t* client, uint8_t* message, size_t message_size);
771static void client_disconnected(pkrsrv_server_client_t* client);
772
773bool pkrsrv_server_send_binary(pkrsrv_server_client_t* client, uint8_t* data, size_t size);
774
775static void opcode_handler_nop(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
776static void opcode_handler_meow(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
777static void opcode_handler_ping(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
778static void opcode_handler_login(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
779static void opcode_handler_signup(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
780static void opcode_handler_auth_session(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
781static void opcode_handler_get_account(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
782static void opcode_handler_enter(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
783static void opcode_handler_leave(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
784static void opcode_handler_join(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
785static void opcode_handler_unjoin(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
786static void opcode_handler_poker_action(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
787static void opcode_handler_get_tables(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
788static void opcode_handler_get_sessions(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
789static void opcode_handler_update_account(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
790static void opcode_handler_json(pkrsrv_server_client_t* client, pkrsrv_server_packet_frame_header_t req_header);
791
792bool pkrsrv_server_send_over_capacity(pkrsrv_server_client_t* client);
793bool pkrsrv_server_send_pong(pkrsrv_server_client_t* client);
794
795typedef struct {
796 pkrsrv_server_client_t* client;
797 uint8_t is_ok;
798 uint8_t is_logined;
799 pkrsrv_account_t* account;
800 pkrsrv_auth_session_t* auth_session;
803
804typedef struct {
805 pkrsrv_server_client_t* client;
806 uint8_t is_ok;
807 uint8_t is_logined;
808 uint16_t status;
809 pkrsrv_account_t* account;
810 pkrsrv_auth_session_t* auth_session;
813
814typedef struct {
815 pkrsrv_server_client_t* client;
816 uint8_t is_ok;
817 uint8_t is_logined;
818 pkrsrv_account_t* account;
821
822typedef struct {
823 pkrsrv_server_client_t* client;
824 pkrsrv_account_t* account;
827
828typedef struct {
829 pkrsrv_server_client_t* client;
830 uint64_t table_id;
831 uint8_t is_ok;
834
835typedef struct {
836 pkrsrv_server_client_t* client;
837 uint64_t table_id;
838 uint8_t is_ok;
841
842typedef struct {
843 pkrsrv_server_client_t* client;
844 uint64_t table_id;
845 uint8_t is_ok;
848
849typedef struct {
850 pkrsrv_server_client_t* client;
851 uint64_t table_id;
852 uint8_t is_ok;
855
856typedef struct {
857 pkrsrv_server_client_t* client;
858 pkrsrv_poker_t* poker;
861bool pkrsrv_server_send_poker_info_player(pkrsrv_server_client_t* p_client, pkrsrv_poker_player_t* p_player);
862
863typedef struct {
864 pkrsrv_server_client_t* client;
865 pkrsrv_poker_t* poker;
866 pkrsrv_poker_player_t* player;
869bool pkrsrv_server_send_poker_state_player(pkrsrv_server_client_t* p_client, pkrsrv_poker_player_t* p_player);
870
871typedef struct {
872 pkrsrv_server_client_t* client;
873 uint64_t table_id;
874 uint64_t account_id;
875 uint16_t action_kind;
876 uint64_t amount;
879
880typedef struct {
881 pkrsrv_server_client_t* client;
882 uint64_t table_id;
883
886
887 pkrsrv_poker_t* poker;
890
891typedef struct {
892 pkrsrv_server_client_t* client;
893 uint64_t table_id;
896
897typedef struct {
898 pkrsrv_server_client_t* client;
899 uint64_t table_id;
900 uint32_t reason;
903
904typedef struct {
905 pkrsrv_server_client_t* client;
906 uint16_t offset;
910
911typedef struct {
912 pkrsrv_server_client_t* client;
913 uint16_t offset;
915 pkrsrv_poker_t** pokers;
918
919typedef struct {
920 pkrsrv_server_client_t* client;
921 bool is_ok;
925
926typedef struct {
927 pkrsrv_server_client_t* client;
928 uint64_t build_number;
929 pkrsrv_string_t* version;
930 pkrsrv_string_t* revision;
931 pkrsrv_string_t* compiler;
934
935typedef struct {
936 pkrsrv_server_client_t* client;
937 pkrsrv_string_t* json;
940
941static void sigabrt_handler();
942static void sigpipe_handler(int signal);
943
#define PKRSRV_REF_COUNTEDIFY()
Makes a structure reference-counted.
Definition ref.h:70
void(* on_client_signup)(pkrsrv_eventloop_task_t *task)
Definition server.h:727
pkrsrv_server_packet_update_account_t update_account
Definition server.h:640
pkrsrv_server_packet_unjoin_t unjoin
Definition server.h:601
pkrsrv_server_client_t * client
Definition server.h:815
pkrsrv_server_client_t * client
Definition server.h:585
pkrsrv_server_client_t * client
Definition server.h:581
pkrsrv_string_t * json
Definition server.h:937
pkrsrv_server_client_t * client
Definition server.h:796
bool is_avatar_too_big
Definition server.h:922
pkrsrv_server_client_t * client
Definition server.h:936
pkrsrv_server_client_t * client
Definition server.h:805
pkrsrv_account_t * account
Definition server.h:824
void(* on_client_enter)(pkrsrv_eventloop_task_t *task)
Definition server.h:730
pkrsrv_server_client_t * client
Definition server.h:624
pkrsrv_server_clients_t * clients
Definition server.h:660
uint8_t is_ok
Definition server.h:852
pkrsrv_server_client_t * client
Definition server.h:920
pkrsrv_poker_t ** pokers
Definition server.h:915
uint8_t is_ok
Definition server.h:816
void(* on_client_get_sessions)(pkrsrv_eventloop_task_t *task)
Definition server.h:736
void(* on_client_json)(pkrsrv_eventloop_task_t *task)
Definition server.h:677
void * owner
Definition server.h:594
pkrsrv_server_packet_get_sessions_t get_sessions
Definition server.h:635
uint64_t table_id
Definition server.h:545
pkrsrv_server_client_t * client
Definition server.h:927
uint64_t table_id
Definition server.h:535
pkrsrv_server_client_t * next
Definition server.h:685
pkrsrv_server_packet_auth_session_t auth_session
Definition server.h:616
pkrsrv_server_client_t * client
Definition server.h:610
uint16_t length
Definition server.h:552
pkrsrv_string_t * name
Definition server.h:565
pkrsrv_server_packet_enter_t enter
Definition server.h:586
void * owner
Definition server.h:609
pkrsrv_server_packet_get_tables_t get_tables
Definition server.h:630
void(* on_client_leave)(pkrsrv_eventloop_task_t *task)
Definition server.h:731
pkrsrv_server_packet_leave_t leave
Definition server.h:591
pkrsrv_server_packet_signup_t signup
Definition server.h:611
pkrsrv_string_t * avatar
Definition server.h:566
void(* on_client_auth_session)(pkrsrv_eventloop_task_t *task)
Definition server.h:667
pkrsrv_server_client_t * client
Definition server.h:590
uint32_t avatar_length
Definition server.h:518
void(* on_client_auth_session)(pkrsrv_eventloop_task_t *task)
Definition server.h:728
pthread_mutex_t write_mutex
Definition server.h:704
pkrsrv_account_t * account
Definition server.h:799
pkrsrv_server_packet_login_t login
Definition server.h:606
pkrsrv_string_t * compiler
Definition server.h:931
void * owner
Definition server.h:589
int address
Definition server.h:707
pkrsrv_account_t * account
Definition server.h:818
PGconn * pg_conn
Definition server.h:698
void(* on_client_json)(pkrsrv_eventloop_task_t *task)
Definition server.h:738
void * owner
Definition server.h:718
pkrsrv_string_t * avatar
Definition server.h:519
pkrsrv_poker_t * poker
Definition server.h:887
void(* on_client_get_account)(pkrsrv_eventloop_task_t *task)
Definition server.h:668
pkrsrv_server_client_t * client
Definition server.h:898
char * host_address
Definition server.h:658
pkrsrv_table_list_t * list
Definition server.h:907
void(* on_client_signup)(pkrsrv_eventloop_task_t *task)
Definition server.h:666
pkrsrv_server_client_t * client
Definition server.h:829
pkrsrv_server_client_t * client
Definition server.h:644
uint64_t build_number
Definition server.h:928
pkrsrv_server_client_t * client
Definition server.h:634
pkrsrv_string_t * name
Definition server.h:517
pkrsrv_server_client_t * client
Definition server.h:577
pkrsrv_server_client_t * terminal
Definition server.h:686
pkrsrv_server_client_t * client
Definition server.h:857
pkrsrv_server_client_t * client
Definition server.h:864
void(* on_client_action)(pkrsrv_eventloop_task_t *task)
Definition server.h:734
uint16_t action_kind
Definition server.h:546
void * owner
Definition server.h:576
uint8_t is_ok
Definition server.h:831
uint64_t winner_account_id
Definition server.h:884
uint8_t position
Definition server.h:537
bool is_running
Definition server.h:680
void(* on_client_login)(pkrsrv_eventloop_task_t *task)
Definition server.h:726
pkrsrv_account_t * account
Definition server.h:809
void * owner
Definition server.h:708
void(* on_client_update_account)(pkrsrv_eventloop_task_t *task)
Definition server.h:737
void * owner
Definition server.h:604
uint64_t table_id
Definition server.h:882
pkrsrv_server_client_t * client
Definition server.h:629
void(* on_client_meowed)(pkrsrv_eventloop_task_t *task)
Definition server.h:664
uint64_t table_id
Definition server.h:531
uint16_t offset
Definition server.h:551
pkrsrv_auth_session_t * auth_session
Definition server.h:810
pkrsrv_server_client_t * client
Definition server.h:823
pkrsrv_server_client_t * client
Definition server.h:912
pkrsrv_auth_session_t * auth_session
Definition server.h:800
uint8_t is_logined
Definition server.h:798
uint64_t table_id
Definition server.h:541
bool is_protocol_determined
Definition server.h:701
pkrsrv_string_t * password
Definition server.h:511
pkrsrv_server_client_t * client
Definition server.h:905
void(* on_client_join)(pkrsrv_eventloop_task_t *task)
Definition server.h:671
void(* on_client_get_tables)(pkrsrv_eventloop_task_t *task)
Definition server.h:674
uint64_t table_id
Definition server.h:830
int port
Definition server.h:656
pkrsrv_string_t * id_token
Definition server.h:515
uint32_t reason
Definition server.h:900
uint16_t offset
Definition server.h:556
int max_clients
Definition server.h:722
int socket
Definition server.h:705
uint64_t earned_amount
Definition server.h:885
pkrsrv_server_client_t * client
Definition server.h:881
pkrsrv_server_packet_json_t json
Definition server.h:645
void(* on_client_enter)(pkrsrv_eventloop_task_t *task)
Definition server.h:669
pkrsrv_string_t * token
Definition server.h:523
int server_socket
Definition server.h:706
void(* on_client_connected)(pkrsrv_eventloop_task_t *task)
Definition server.h:723
void(* on_client_get_account)(pkrsrv_eventloop_task_t *task)
Definition server.h:729
pkrsrv_server_client_t * client
Definition server.h:600
void(* on_client_get_sessions)(pkrsrv_eventloop_task_t *task)
Definition server.h:675
int port
Definition server.h:719
bool is_alive
Definition server.h:700
int length
Definition server.h:687
void(* on_client_join)(pkrsrv_eventloop_task_t *task)
Definition server.h:732
pkrsrv_server_client_t * client
Definition server.h:620
pkrsrv_server_client_t * client
Definition server.h:836
void * owner
Definition server.h:654
void * owner
Definition server.h:584
uint8_t is_logined
Definition server.h:807
int pokers_length
Definition server.h:914
void(* on_client_action)(pkrsrv_eventloop_task_t *task)
Definition server.h:673
pkrsrv_server_client_t * prev
Definition server.h:684
pkrsrv_string_t * id_token
Definition server.h:510
void(* on_client_disconnected)(pkrsrv_eventloop_task_t *task)
Definition server.h:663
char * bind_address
Definition server.h:657
void * owner
Definition server.h:628
pkrsrv_poker_t * poker
Definition server.h:865
void * owner
Definition server.h:623
pkrsrv_string_t * json
Definition server.h:561
void * owner
Definition server.h:643
pthread_t thread
Definition server.h:679
SSL * ssl
Definition server.h:699
void * owner
Definition server.h:580
void(* on_client_get_tables)(pkrsrv_eventloop_task_t *task)
Definition server.h:735
uint8_t is_ok
Definition server.h:797
void(* on_client_connected)(pkrsrv_eventloop_task_t *task)
Definition server.h:662
uint16_t action_kind
Definition server.h:875
uint64_t table_id
Definition server.h:527
pkrsrv_string_t * revision
Definition server.h:930
pkrsrv_eventloop_t * eventloop
Definition server.h:721
pkrsrv_server_client_t * client
Definition server.h:872
pkrsrv_server_client_t * client
Definition server.h:573
pkrsrv_eventloop_t * eventloop
Definition server.h:655
pkrsrv_server_t * server
Definition server.h:697
void(* on_client_unjoin)(pkrsrv_eventloop_task_t *task)
Definition server.h:672
uint8_t is_logined
Definition server.h:817
void(* on_client_unjoin)(pkrsrv_eventloop_task_t *task)
Definition server.h:733
pkrsrv_string_t * version
Definition server.h:929
uint64_t table_id
Definition server.h:837
void * owner
Definition server.h:638
uint64_t table_id
Definition server.h:851
void(* on_client_disconnected)(pkrsrv_eventloop_task_t *task)
Definition server.h:724
void * owner
Definition server.h:614
pkrsrv_string_t * password
Definition server.h:516
uint64_t account_id
Definition server.h:874
pkrsrv_poker_player_t * player
Definition server.h:866
uint16_t offset
Definition server.h:906
pkrsrv_server_client_t * client
Definition server.h:615
void * owner
Definition server.h:572
uint64_t table_id
Definition server.h:844
uint64_t enterance_amount
Definition server.h:536
void(* on_client_meowed)(pkrsrv_eventloop_task_t *task)
Definition server.h:725
pkrsrv_poker_t * poker
Definition server.h:858
pkrsrv_server_client_t * client
Definition server.h:892
uint64_t table_id
Definition server.h:893
uint8_t is_ok
Definition server.h:806
pkrsrv_server_packet_join_t join
Definition server.h:596
uint16_t length
Definition server.h:557
uint8_t is_ok
Definition server.h:838
pthread_mutex_t mutex
Definition server.h:678
pkrsrv_server_client_t * client
Definition server.h:843
pkrsrv_server_client_t * client
Definition server.h:595
pkrsrv_server_client_t * client
Definition server.h:605
pkrsrv_server_client_t * client
Definition server.h:639
void(* on_client_update_account)(pkrsrv_eventloop_task_t *task)
Definition server.h:676
char * bind_address
Definition server.h:720
void(* on_client_leave)(pkrsrv_eventloop_task_t *task)
Definition server.h:670
void * owner
Definition server.h:599
uint16_t status
Definition server.h:808
int max_clients
Definition server.h:659
void * owner
Definition server.h:619
pkrsrv_websocket_t websocket
Definition server.h:703
uint8_t is_ok
Definition server.h:845
SSL_CTX * ssl_ctx
Definition server.h:661
uint64_t table_id
Definition server.h:899
uint64_t amount
Definition server.h:547
pkrsrv_server_packet_poker_action_t action
Definition server.h:625
void(* on_client_login)(pkrsrv_eventloop_task_t *task)
Definition server.h:665
void * owner
Definition server.h:633
pkrsrv_server_client_t * client
Definition server.h:850
uint16_t offset
Definition server.h:913
bool is_websocket
Definition server.h:702
int pkrsrv_server_net_write(pkrsrv_server_client_t *client, void *buffer, ssize_t length)
struct pkrsrv_server_packet_frame_poker_restarted pkrsrv_server_packet_frame_poker_restarted_t
Definition server.h:65
PKRSRV_SERVER_OPCODE
Definition server.h:83
bool pkrsrv_server_send_unjoin_res(pkrsrv_server_send_unjoin_res_params_t params)
struct pkrsrv_server_packet_frame_login_res pkrsrv_server_packet_frame_login_res_t
Definition server.h:40
struct pkrsrv_server_packet_frame_poker_info pkrsrv_server_packet_frame_poker_info_t
Definition server.h:57
struct pkrsrv_server_packet_frame_poker_state_player pkrsrv_server_packet_frame_poker_state_player_t
Definition server.h:60
struct pkrsrv_server_packet_frame_unjoined pkrsrv_server_packet_frame_unjoined_t
Definition server.h:66
bool pkrsrv_server_send_tables(pkrsrv_server_send_tables_params_t params)
struct pkrsrv_server_packet_frame_table pkrsrv_server_packet_frame_table_t
Definition server.h:71
bool pkrsrv_server_send_json(pkrsrv_server_send_json_params_t params)
void pkrsrv_server_add_client(pkrsrv_server_t *server, pkrsrv_server_client_t *client)
struct pkrsrv_server_packet_frame_signup pkrsrv_server_packet_frame_signup_t
Definition server.h:42
struct pkrsrv_server_packet_frame_signup_res_account pkrsrv_server_packet_frame_signup_res_account_t
Definition server.h:44
bool pkrsrv_server_send_poker_end(pkrsrv_server_send_poker_end_params_t params)
struct pkrsrv_server_packet_frame_login_res_account pkrsrv_server_packet_frame_login_res_account_t
Definition server.h:41
void pkrsrv_server_remove_client__ts(pkrsrv_server_t *server, pkrsrv_server_client_t *client)
pkrsrv_server_packet_signup_res_status_t
Definition server.h:123
struct pkrsrv_server_packet_frame_poker_end pkrsrv_server_packet_frame_poker_end_t
Definition server.h:63
struct pkrsrv_server_packet_frame_header pkrsrv_server_packet_frame_header_t
Definition server.h:38
void pkrsrv_server_remove_client(pkrsrv_server_t *server, pkrsrv_server_client_t *client)
bool pkrsrv_server_send_signup_res(pkrsrv_server_send_signup_res_params_t params)
struct pkrsrv_server_packet_frame_tables pkrsrv_server_packet_frame_tables_t
Definition server.h:68
struct pkrsrv_server_packet_frame_enter pkrsrv_server_packet_frame_enter_t
Definition server.h:49
struct pkrsrv_server_packet_frame_leave pkrsrv_server_packet_frame_leave_t
Definition server.h:51
struct __attribute__((__packed__)) pkrsrv_server_packet_frame_header
Definition server.h:134
bool pkrsrv_server_send_poker_info(pkrsrv_server_send_poker_info_params_t params)
struct pkrsrv_server_packet_frame_sessions pkrsrv_server_packet_frame_sessions_t
Definition server.h:70
bool pkrsrv_server_send_account(pkrsrv_server_send_account_params_t params)
struct pkrsrv_server_packet_frame_enter_res pkrsrv_server_packet_frame_enter_res_t
Definition server.h:50
bool pkrsrv_server_send_poker_info_player(pkrsrv_server_client_t *p_client, pkrsrv_poker_player_t *p_player)
struct pkrsrv_server_packet_frame_poker_action pkrsrv_server_packet_frame_poker_action_t
Definition server.h:61
struct pkrsrv_server_packet_frame_join pkrsrv_server_packet_frame_join_t
Definition server.h:53
struct pkrsrv_server_packet_frame_leave_res pkrsrv_server_packet_frame_leave_res_t
Definition server.h:52
struct pkrsrv_server_packet_frame_signup_res pkrsrv_server_packet_frame_signup_res_t
Definition server.h:43
struct pkrsrv_server_packet_frame_login pkrsrv_server_packet_frame_login_t
Definition server.h:39
struct pkrsrv_server_packet_frame_auth_session_res pkrsrv_server_packet_frame_auth_session_res_t
Definition server.h:46
bool pkrsrv_server_send_leave_res(pkrsrv_server_send_leave_res_params_t params)
void pkrsrv_server_add_client__ts(pkrsrv_server_t *server, pkrsrv_server_client_t *client)
bool pkrsrv_server_send_enter_res(pkrsrv_server_send_enter_res_params_t params)
struct pkrsrv_server_packet_frame_account pkrsrv_server_packet_frame_account_t
Definition server.h:48
pkrsrv_server_clients_t * pkrsrv_server_clients_new()
bool pkrsrv_server_send_server_info(pkrsrv_server_send_server_info_params_t params)
struct pkrsrv_server_packet_frame_poker_action_reflection pkrsrv_server_packet_frame_poker_action_reflection_t
Definition server.h:62
struct pkrsrv_server_packet_frame_unjoin pkrsrv_server_packet_frame_unjoin_t
Definition server.h:55
struct pkrsrv_server_packet_frame_unjoin_res pkrsrv_server_packet_frame_unjoin_res_t
Definition server.h:56
bool pkrsrv_server_send_login_res(pkrsrv_server_send_login_res_params_t params)
bool pkrsrv_server_send_pong(pkrsrv_server_client_t *client)
struct pkrsrv_server_packet_frame_poker_end_score pkrsrv_server_packet_frame_poker_end_score_t
Definition server.h:64
int pkrsrv_server_ssl_write(SSL *ssl, void *buffer, ssize_t length)
int pkrsrv_server_ssl_read(SSL *ssl, void *buffer, ssize_t length)
uint32_t pkrsrv_server_opcode_t
Definition server.h:78
bool pkrsrv_server_send_poker_restarted(pkrsrv_server_send_poker_restarted_params_t params)
bool pkrsrv_server_send_poker_state_player(pkrsrv_server_client_t *p_client, pkrsrv_poker_player_t *p_player)
struct pkrsrv_server_packet_frame_poker_state pkrsrv_server_packet_frame_poker_state_t
Definition server.h:59
bool pkrsrv_server_send_auth_session_res(pkrsrv_server_send_auth_session_res_params_t params)
struct pkrsrv_server_packet_frame_join_res pkrsrv_server_packet_frame_join_res_t
Definition server.h:54
pkrsrv_server_client_t * pkrsrv_server_client_new(pkrsrv_server_t *server)
void pkrsrv_server_listen(pkrsrv_server_t *server)
bool pkrsrv_server_send_join_res(pkrsrv_server_send_join_res_params_t params)
bool pkrsrv_server_send_poker_state(pkrsrv_server_send_poker_state_params_t params)
bool pkrsrv_server_send_sessions(pkrsrv_server_send_sessions_params_t params)
struct pkrsrv_server_packet_frame_update_account pkrsrv_server_packet_frame_update_account_t
Definition server.h:72
void pkrsrv_server_start(pkrsrv_server_t *server)
struct pkrsrv_server_packet_frame_auth_session pkrsrv_server_packet_frame_auth_session_t
Definition server.h:45
struct pkrsrv_server_packet_frame_poker_info_player pkrsrv_server_packet_frame_poker_info_player_t
Definition server.h:58
struct pkrsrv_server_packet_frame_server_info pkrsrv_server_packet_frame_server_info_t
Definition server.h:74
void(* opcode_handler_t)(pkrsrv_server_client_t *client, pkrsrv_server_packet_frame_header_t req_header)
Definition server.h:129
pkrsrv_server_t * pkrsrv_server_new(pkrsrv_server_new_params_t params)
bool pkrsrv_server_send_binary(pkrsrv_server_client_t *client, uint8_t *data, size_t size)
bool pkrsrv_server_send_over_capacity(pkrsrv_server_client_t *client)
int pkrsrv_server_net_read(pkrsrv_server_client_t *client, void *buffer, ssize_t length)
struct pkrsrv_server_packet_frame_get_tables pkrsrv_server_packet_frame_get_tables_t
Definition server.h:67
bool pkrsrv_server_send_update_account_res(pkrsrv_server_send_update_account_res_params_t params)
struct pkrsrv_server_packet_frame_get_sessions pkrsrv_server_packet_frame_get_sessions_t
Definition server.h:69
void pkrsrv_server_client_free(pkrsrv_server_client_t *client)
struct pkrsrv_server_packet_frame_auth_session_res_account pkrsrv_server_packet_frame_auth_session_res_account_t
Definition server.h:47
bool pkrsrv_server_send_poker_action_reflection(pkrsrv_server_send_poker_action_reflection_params_t params)
bool pkrsrv_server_send_unjoined(pkrsrv_server_send_unjoined_params_t params)
struct pkrsrv_server_packet_frame_update_account_res pkrsrv_server_packet_frame_update_account_res_t
Definition server.h:73
void pkrsrv_server_free(pkrsrv_server_t *server)
@ PKRSRV_SERVER_OPCODE_POKER_ACTION
Definition server.h:106
@ PKRSRV_SERVER_OPCODE_PING
Definition server.h:86
@ PKRSRV_SERVER_OPCODE_JOIN_RES
Definition server.h:101
@ PKRSRV_SERVER_OPCODE_GET_SESSIONS
Definition server.h:114
@ PKRSRV_SERVER_OPCODE_OVER_CAPACITY
Definition server.h:119
@ PKRSRV_SERVER_OPCODE_SERVER_INFO
Definition server.h:118
@ PKRSRV_SERVER_OPCODE_PONG
Definition server.h:87
@ PKRSRV_SERVER_OPCODE_ACCOUNT
Definition server.h:95
@ PKRSRV_SERVER_OPCODE_POKER_ACTION_REFLECTION
Definition server.h:107
@ PKRSRV_SERVER_OPCODE_POKER_END
Definition server.h:108
@ PKRSRV_SERVER_OPCODE_JSON
Definition server.h:110
@ PKRSRV_SERVER_OPCODE_SESSIONS
Definition server.h:115
@ PKRSRV_SERVER_OPCODE_GET_TABLES
Definition server.h:112
@ PKRSRV_SERVER_OPCODE_END
Definition server.h:120
@ PKRSRV_SERVER_OPCODE_POKER_STATE
Definition server.h:105
@ PKRSRV_SERVER_OPCODE_POKER_RESTARTED
Definition server.h:109
@ PKRSRV_SERVER_OPCODE_AUTH_SESSION
Definition server.h:92
@ PKRSRV_SERVER_OPCODE_SIGNUP_RES
Definition server.h:91
@ PKRSRV_SERVER_OPCODE_LOGIN
Definition server.h:88
@ PKRSRV_SERVER_OPCODE_GET_ACCOUNT
Definition server.h:94
@ PKRSRV_SERVER_OPCODE_POKER_INFO
Definition server.h:104
@ PKRSRV_SERVER_OPCODE_LEAVE
Definition server.h:98
@ PKRSRV_SERVER_OPCODE_LOGIN_RES
Definition server.h:89
@ PKRSRV_SERVER_OPCODE_UNJOIN_RES
Definition server.h:103
@ PKRSRV_SERVER_OPCODE_SIGNUP
Definition server.h:90
@ PKRSRV_SERVER_OPCODE_NOP
Definition server.h:84
@ PKRSRV_SERVER_OPCODE_UNJOIN
Definition server.h:102
@ PKRSRV_SERVER_OPCODE_ENTER
Definition server.h:96
@ PKRSRV_SERVER_OPCODE_LEAVE_RES
Definition server.h:99
@ PKRSRV_SERVER_OPCODE_UNJOINED
Definition server.h:111
@ PKRSRV_SERVER_OPCODE_UPDATE_ACCOUNT
Definition server.h:116
@ PKRSRV_SERVER_OPCODE_MEOW
Definition server.h:85
@ PKRSRV_SERVER_OPCODE_TABLES
Definition server.h:113
@ PKRSRV_SERVER_OPCODE_ENTER_RES
Definition server.h:97
@ PKRSRV_SERVER_OPCODE_JOIN
Definition server.h:100
@ PKRSRV_SERVER_OPCODE_UPDATE_ACCOUNT_RES
Definition server.h:117
@ PKRSRV_SERVER_OPCODE_AUTH_SESSION_RES
Definition server.h:93
@ PKRSRV_SERVER_PACKET_SIGNUP_RES_STATUS_ALREADY_EXISTS
Definition server.h:126
@ PKRSRV_SERVER_PACKET_SIGNUP_RES_STATUS_OK
Definition server.h:124
@ PKRSRV_SERVER_PACKET_SIGNUP_RES_STATUS_ERROR
Definition server.h:125
Definition server.h:622
Definition server.h:613
Definition server.h:571
Definition server.h:575
Definition server.h:583
Definition server.h:618
Definition server.h:632
Definition server.h:627
Definition server.h:593
Definition server.h:642
Definition server.h:588
Definition server.h:603
Definition server.h:579
Definition server.h:608
Definition server.h:598
Definition server.h:637
Definition server.h:652
Definition server.h:694
Definition server.h:683
Definition server.h:717
Definition server.h:526
Definition server.h:550
Definition server.h:534
Definition server.h:560
Definition server.h:530
Definition server.h:509
Definition server.h:514
Definition server.h:540
Definition server.h:935
Definition server.h:904
#define ITEMIFY(type)
Definition sugar.h:44
Definition table.h:49
Definition websocket.h:94