54 lines
2.0 KiB
C
54 lines
2.0 KiB
C
/*
|
||
* chat_setting.h — chat-related settings (key-value API)
|
||
*
|
||
* Один API для всех потребителей: парсер конфига (headless) и GUI (через bridge).
|
||
* chat_setting_set(name, value) — валидация + хранение + apply к модулям.
|
||
* Возвращает 0=OK, -1=неизвестная настройка, -2=невалидное значение.
|
||
*
|
||
* Состояние — per-instance. Конфиг-парсер заполняет struct chat_setting_state
|
||
* из [chatserver] ещё до создания instance (state-уровень), затем runtime-модули
|
||
* читают через instance-уровень (chat_setting_get_int(inst, ...)).
|
||
*/
|
||
|
||
#ifndef CHAT_SETTING_H
|
||
#define CHAT_SETTING_H
|
||
|
||
#include <stdint.h>
|
||
|
||
struct UTUN_INSTANCE;
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/* ─── per-instance хранилище ─── */
|
||
|
||
#define CHAT_SETTING_MAX_SETTINGS 48
|
||
#define CHAT_SETTING_STRING_MAX 16
|
||
|
||
struct chat_setting_state {
|
||
int values[CHAT_SETTING_MAX_SETTINGS];
|
||
int string_idx[CHAT_SETTING_STRING_MAX];
|
||
char string_val[CHAT_SETTING_STRING_MAX][256];
|
||
int string_count;
|
||
int initialized;
|
||
char int_buf[16]; /* буфер для chat_setting_get_state у int-настроек */
|
||
};
|
||
|
||
/* ─── state-уровень (конфиг-парсер, до создания instance) ─── */
|
||
|
||
int chat_setting_set_state(struct chat_setting_state* s, const char* name, const char* value);
|
||
const char* chat_setting_get_state(const struct chat_setting_state* s, const char* name);
|
||
int chat_setting_get_int_state(const struct chat_setting_state* s, const char* name, int def);
|
||
|
||
/* ─── instance-уровень (runtime) ─── */
|
||
|
||
int chat_setting_set(struct UTUN_INSTANCE* inst, const char* name, const char* value);
|
||
const char* chat_setting_get(struct UTUN_INSTANCE* inst, const char* name);
|
||
int chat_setting_get_int(struct UTUN_INSTANCE* inst, const char* name, int def);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
#endif /* CHAT_SETTING_H */
|