adamc@764: #ifndef URWEB_TYPES_H adamc@764: #define URWEB_TYPES_H adamc@764: adamc@436: #include adamc@914: #include adamc@1115: #include adamc@436: adamc@311: typedef long long uw_Basis_int; adamc@311: typedef double uw_Basis_float; adamc@311: typedef char* uw_Basis_string; adamc@821: typedef char uw_Basis_char; adam@1365: typedef struct { adam@1365: time_t seconds; adam@1365: unsigned microseconds; adam@1365: } uw_Basis_time; adamc@737: typedef struct { adamc@737: size_t size; adamc@737: char *data; adamc@737: } uw_Basis_blob; adamc@102: adam@1431: typedef int uw_unit; adamc@311: typedef uw_unit uw_Basis_unit; adamc@117: adamc@311: typedef enum uw_Basis_bool { uw_Basis_False, uw_Basis_True } uw_Basis_bool; adamc@186: adamc@311: typedef struct uw_context *uw_context; adamc@117: adamc@311: typedef uw_Basis_string uw_Basis_xhtml; adamc@311: typedef uw_Basis_string uw_Basis_page; adamc@757: typedef uw_Basis_string uw_Basis_xbody; adamc@721: typedef uw_Basis_string uw_Basis_css_class; adamc@682: adamc@682: typedef unsigned uw_Basis_client; adamc@682: typedef struct { adamc@682: unsigned cli, chn; adamc@682: } uw_Basis_channel; adamc@167: adam@1446: typedef struct { adam@1446: int context; adam@1446: unsigned long long source; adam@1446: } uw_Basis_source; adam@1446: adamc@737: typedef struct uw_Basis_file { adamc@740: uw_Basis_string name, type; adamc@737: uw_Basis_blob data; adamc@737: } uw_Basis_file; adamc@737: adam@1347: typedef struct uw_Basis_postBody { adam@1347: uw_Basis_string type, data; adam@1347: } uw_Basis_postBody; adam@1347: adam@1370: typedef uw_Basis_string uw_Basis_queryString; adam@1370: adamc@1065: typedef enum { SUCCESS, FATAL, BOUNDED_RETRY, UNLIMITED_RETRY, RETURN_INDIRECTLY } failure_kind; adamc@295: adamc@853: typedef enum { SERVED, KEEP_OPEN, FAILED } request_result; adamc@853: adamc@756: typedef struct input *uw_input; adamc@295: adamc@295: #define INTS_MAX 50 adamc@295: #define FLOATS_MAX 100 adamc@436: #define TIMES_MAX 100 adamc@668: adamc@771: typedef void (*uw_callback)(void *); adam@1327: typedef void (*uw_callback_with_retry)(void *, int will_retry); adamc@856: typedef void (*uw_logger)(void*, const char *fmt, ...); adamc@771: adamc@1094: typedef struct { adam@1349: void (*callback)(uw_context); adam@1349: unsigned int period; adam@1349: } uw_periodic; adam@1349: adam@1349: typedef struct { adamc@1094: int inputs_len, timeout; adamc@1094: char *url_prefix; adamc@1094: adamc@1094: void (*client_init)(); adamc@1094: void (*initializer)(uw_context); adamc@1094: void (*expunger)(uw_context, uw_Basis_client); adamc@1094: adamc@1094: void (*db_init)(uw_context); adamc@1094: int (*db_begin)(uw_context); adamc@1094: int (*db_commit)(uw_context); adamc@1094: int (*db_rollback)(uw_context); adamc@1094: void (*db_close)(uw_context); adamc@1094: adamc@1094: void (*handle)(uw_context, char *); adamc@1094: adamc@1094: int (*input_num)(const char*); adamc@1094: uw_Basis_string (*cookie_sig)(uw_context); adamc@1094: int (*check_url)(const char *); adamc@1094: int (*check_mime)(const char *); adam@1465: int (*check_requestHeader)(const char *); adam@1465: int (*check_responseHeader)(const char *); adam@1294: adam@1294: void (*on_error)(uw_context, char *); adam@1349: adam@1349: uw_periodic *periodics; // 0-terminated array adamc@1094: } uw_app; adamc@1094: adam@1294: #define ERROR_BUF_LEN 1024 adam@1294: adam@1369: typedef struct { adam@1369: size_t max; adam@1369: char *start, *front, *back; adam@1369: } uw_buffer; adam@1369: adamc@764: #endif