.. _program_listing_file_server_event.h: Program Listing for File event.h ================================ |exhale_lsh| :ref:`Return to documentation for file ` (``server/event.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef EVENT_H_ #define EVENT_H_ #include #include #include #include "utils/debug.h" static constexpr const int COMMAND_WORD_COUNT = 5; constexpr const int CLIENT_DEAD = -2; bool command_split(char *buff, char *argv[static COMMAND_WORD_COUNT], size_t command_len); typedef struct { uint64_t timestamp; // Timestamp of the event in milliseconds int client_idx; int client_id; uint8_t arg_count; union { char *command[COMMAND_WORD_COUNT]; // Command words for the event char *action[COMMAND_WORD_COUNT]; // Action words for the event }; } event_t; typedef struct { event_t *buff; // Pointer to the array of events size_t nmemb; // Number of events currently in the heap size_t capacity; // Maximum number of events the heap can hold } event_heap_t; bool event_heap_init(event_heap_t *heap); void event_heap_free(event_heap_t *heap); bool event_heap_push(event_heap_t *heap, const event_t *event); event_t event_heap_pop(event_heap_t *heap); static inline bool event_heap_is_empty(const event_heap_t *heap) { return heap->nmemb == 0; } static inline const event_t *event_heap_peek(const event_heap_t *heap) { if (heap->nmemb == 0) { DEBUG_MSG("Event heap is empty, Can't peek"); return nullptr; } return &heap->buff[0]; } typedef struct client_state_s client_state_t; typedef struct server_s server_t; client_state_t *event_get_client(server_t *srv, event_t const *event); #endif /* EVENT_H_ */