Files
OmniSocketGo/c/include/omni_common.h
2026-03-30 13:52:56 +08:00

68 lines
2.3 KiB
C

#ifndef OMNI_COMMON_H
#define OMNI_COMMON_H
#include <errno.h>
#include <inttypes.h>
#include <pthread.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#define OMNI_NODE_ROLE_PEER "peer"
#define OMNI_NODE_ROLE_SERVER "server"
#define OMNI_MAX_PEER_ID 64
#define OMNI_MAX_NODE_ROLE 16
#define OMNI_MAX_EVENT_NAME 64
#define OMNI_MAX_FILE_NAME 256
#define OMNI_MAX_ADDR_TEXT 128
#define OMNI_MAX_FRAME_SIZE (8U * 1024U * 1024U)
#define OMNI_ARRAY_LEN(x) (sizeof(x) / sizeof((x)[0]))
typedef struct omni_file_logger {
FILE *file;
pthread_mutex_t mutex;
} omni_file_logger_t;
int64_t omni_now_unix_nano(void);
uint32_t omni_now_millis32(void);
int omni_set_nonblocking(int fd, int enabled);
int omni_parse_sockaddr(const char *raw, int passive, struct sockaddr_storage *addr, socklen_t *addr_len, int *family_out);
int omni_clone_sockaddr(const struct sockaddr *src, socklen_t src_len, struct sockaddr_storage *dst, socklen_t *dst_len);
const char *omni_sockaddr_to_string(const struct sockaddr *addr, socklen_t addr_len, char *buffer, size_t buffer_len);
int omni_bind_device(int fd, const char *device);
int omni_ensure_dir(const char *path);
int omni_ensure_parent_dir(const char *path);
int omni_read_file(const char *path, uint8_t **out, size_t *out_len);
int omni_write_full_fd(int fd, const uint8_t *data, size_t len);
int omni_append_file(const char *path, const uint8_t *data, size_t len);
int omni_write_file(const char *path, const uint8_t *data, size_t len);
int omni_random_u32(uint32_t *out);
char *omni_strdup(const char *src);
char *omni_strdup_printf(const char *fmt, ...);
char *omni_json_escape(const char *src);
char *omni_json_escape_bytes(const uint8_t *src, size_t len);
int omni_utf8_valid(const uint8_t *data, size_t len);
void omni_trim_newline(char *line);
int omni_parse_duration_ms(const char *raw, int default_ms, int *out_ms);
double omni_duration_ms_to_ns(double ms);
const char *omni_path_base_name(const char *path);
void omni_file_logger_init(omni_file_logger_t *logger, FILE *file);
void omni_file_logger_destroy(omni_file_logger_t *logger);
int omni_file_logger_write_line(omni_file_logger_t *logger, const char *line);
#endif