mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-08 08:54:54 +07:00
100 lines
2.6 KiB
C
100 lines
2.6 KiB
C
#pragma once
|
|
|
|
#include "fmt.h"
|
|
#include "json.h"
|
|
#include "log.h"
|
|
#include "printf.h"
|
|
#include "str.h"
|
|
#include "ws.h"
|
|
|
|
enum mg_val_type {
|
|
MG_VAL_INT,
|
|
MG_VAL_BOOL,
|
|
MG_VAL_DBL,
|
|
MG_VAL_STR,
|
|
MG_VAL_RAW,
|
|
};
|
|
|
|
struct mg_field {
|
|
const char *name;
|
|
enum mg_val_type type;
|
|
void *value;
|
|
size_t value_size;
|
|
};
|
|
|
|
struct mg_field_set {
|
|
const char *name;
|
|
struct mg_field *fields;
|
|
void (*reader)(void);
|
|
void (*writer)(void);
|
|
int read_level;
|
|
int write_level;
|
|
struct mg_field_set *next;
|
|
};
|
|
|
|
struct mg_dash_custom_handler {
|
|
struct mg_dash_custom_handler *next;
|
|
struct mg_str uri_pattern;
|
|
mg_event_handler_t handler;
|
|
void *handler_data;
|
|
};
|
|
|
|
struct mg_dash_file {
|
|
struct mg_dash_file *next;
|
|
char *name;
|
|
size_t size;
|
|
};
|
|
|
|
struct mg_dash {
|
|
struct mg_field_set *sets;
|
|
struct mg_dash_custom_handler *custom_handlers;
|
|
int (*authenticate)(const char *user, const char *pass);
|
|
int session_auto_expiration_seconds;
|
|
//struct mg_dash_file *files;
|
|
};
|
|
|
|
#define MG_DASH_ADD_FIELD_SET(dash_, set_) \
|
|
do { \
|
|
(set_)->next = (dash_)->sets; \
|
|
(dash_)->sets = (set_); \
|
|
} while (0)
|
|
|
|
#define MG_DASH_REGISTER_CUSTOM_HANDLER(dash_, uri_, fn_, data_) \
|
|
do { \
|
|
static struct mg_dash_custom_handler ch_; \
|
|
ch_.next = (dash_)->custom_handlers; \
|
|
ch_.uri_pattern = mg_str(uri_); \
|
|
ch_.handler = (fn_); \
|
|
ch_.handler_data = (data_); \
|
|
(dash_)->custom_handlers = &ch_; \
|
|
} while (0)
|
|
|
|
#if MG_ARCH == MG_ARCH_UNIX || MG_ARCH == MG_ARCH_WIN32
|
|
#define MG_HTTP_ADDR "http://0.0.0.0:8000"
|
|
#define MG_HTTPS_ADDR "https://0.0.0.0:8443"
|
|
#define MG_MODBUS_ADDR "tcp://0.0.0.0:8502"
|
|
#else
|
|
#define MG_HTTP_ADDR "http://0.0.0.0:80"
|
|
#define MG_HTTPS_ADDR "http://0.0.0.0:443"
|
|
#define MG_MODBUS_ADDR "tcp://0.0.0.0:502"
|
|
#endif
|
|
|
|
#ifndef MG_DASH_MAX_SEND_BUF_SIZE
|
|
#define MG_DASH_MAX_SEND_BUF_SIZE (MG_IO_SIZE * 5)
|
|
#endif
|
|
|
|
// File manager
|
|
extern struct mg_dash_file *mg_dash_files;
|
|
void mg_dash_file_add(struct mg_str name, size_t size);
|
|
void mg_dash_file_del(struct mg_str name);
|
|
|
|
void mg_dash_ev_handler(struct mg_connection *c, int ev, void *ev_data);
|
|
void mg_dash_send_change(struct mg_mgr *mgr, struct mg_field_set *);
|
|
|
|
// Helper forward declarations for Mongoose CMSIS pack modules
|
|
extern struct mg_mgr g_mgr;
|
|
extern void mg_dash_init(struct mg_mgr *);
|
|
extern void mg_dash_poll(struct mg_mgr *);
|
|
extern void mg_mqtt_init(struct mg_mgr *);
|
|
extern void mg_mqtt_poll(struct mg_mgr *);
|