#ifndef OMNI_TRANSPORT_KCP_H #define OMNI_TRANSPORT_KCP_H #include "kcp_packet_debug.h" #include "kcp_session_stats.h" #include "latencylog.h" #ifdef __cplusplus extern "C" { #endif #define KCP_NODELAY 1 #define KCP_INTERVAL 10 #define KCP_RESEND 2 #define KCP_NC 1 #define KCP_WND_SIZE 256 #define KCP_MTU 1400 #define KCP_DEFAULT_STATS_INTERVAL_MS 100 typedef struct kcp_conn kcp_conn_t; typedef struct kcp_listener kcp_listener_t; kcp_conn_t *kcp_conn_dial(const char *server_addr, const char *bind_ip, const char *bind_device, kcp_packet_debug_logger_t *packet_logger, latency_logger_t *logger, const char *node_role, const char *node_id, kcp_session_stats_logger_t *stats_logger, int stats_interval_ms); int kcp_conn_configure_runtime(kcp_conn_t *conn, latency_logger_t *logger, const char *node_role, const char *node_id, kcp_session_stats_logger_t *stats_logger, int stats_interval_ms); int kcp_conn_send(kcp_conn_t *conn, const message_t *msg); int kcp_conn_receive(kcp_conn_t *conn, message_t *out_msg); int kcp_conn_close(kcp_conn_t *conn); void kcp_conn_free(kcp_conn_t *conn); uint32_t kcp_conn_conv(const kcp_conn_t *conn); int kcp_conn_local_addr(const kcp_conn_t *conn, struct sockaddr_storage *addr, socklen_t *addr_len); kcp_listener_t *kcp_listener_listen(const char *listen_addr, const char *bind_device, kcp_packet_debug_logger_t *packet_logger, const char *node_role, const char *node_id); kcp_conn_t *kcp_listener_accept(kcp_listener_t *listener); int kcp_listener_close(kcp_listener_t *listener); void kcp_listener_free(kcp_listener_t *listener); int kcp_session_stats_parse_interval_ms(const char *raw, int *out_ms); #ifdef __cplusplus } #endif #endif