#pragma once #include "global.h" enum event_type{ EVENT_MESSAGE, // message, user, room EVENT_ONLINE, // user, num EVENT_JOIN, // user, room EVENT_LEAVE, // user, room }; struct event_item{ enum event_type type; i64 timestamp; // always set char *message,*user,*room; i64 replyid; i64 num; }; typedef void event_callback_t(const struct event_item *event); void event_register(event_callback_t *cb); void event_unregister(event_callback_t *cb); struct event_item* event_item_alloc(void); void event_item_free(struct event_item *event); void event_emit(const struct event_item *event); void event_emit_message(i64 timestamp,const char *message,const char *user,const char *room,i64 replyid); void event_emit_online(i64 timestamp,const char *user,i64 numonline); void event_emit_join(i64 timestamp,const char *user,const char *room); void event_emit_leave(i64 timestamp,const char *user,const char *room);