added qse_httpd_mod_t and supporting functions

This commit is contained in:
2014-09-04 16:55:45 +00:00
parent d8f8f93207
commit bfeb437225
7 changed files with 285 additions and 278 deletions

View File

@ -847,10 +847,10 @@ typedef void (*qse_awk_mod_fini_t) (
struct qse_awk_mod_t
{
qse_awk_mod_query_t query;
qse_awk_mod_unload_t unload;
qse_awk_mod_unload_t unload; /* unload the module */
qse_awk_mod_init_t init;
qse_awk_mod_fini_t fini;
qse_awk_mod_init_t init; /* per-rtx initialization */
qse_awk_mod_fini_t fini; /* per-rtx finalization */
void* ctx;
};

View File

@ -89,15 +89,55 @@ enum qse_httpd_trait_t
};
typedef enum qse_httpd_trait_t qse_httpd_trait_t;
#if !defined(QSE_HTTPD_DEFAULT_MODPREFIX)
# if defined(_WIN32)
# define QSE_HTTPD_DEFAULT_MODPREFIX "qsehttpd-"
# elif defined(__OS2__)
# define QSE_HTTPD_DEFAULT_MODPREFIX "htd-"
# elif defined(__DOS__)
# define QSE_HTTPD_DEFAULT_MODPREFIX "htd-"
# else
# define QSE_HTTPD_DEFAULT_MODPREFIX "libqsehttpd-"
# endif
#endif
#if !defined(QSE_HTTPD_DEFAULT_MODPOSTFIX)
# define QSE_HTTPD_DEFAULT_MODPOSTFIX ""
#endif
typedef struct qse_httpd_mod_t qse_httpd_mod_t;
typedef int (*qse_httpd_mod_load_t) (
qse_httpd_mod_t* mod
);
typedef int (*qse_httpd_mod_unload_t) (
qse_httpd_mod_t* mod
);
typedef int (*qse_httpd_mod_urs_prerewrite_t) (
qse_httpd_mod_t* mod,
qse_httpd_client_t* client,
qse_htre_t* req,
const qse_mchar_t* host,
qse_mchar_t** url
);
struct qse_httpd_mod_t
{
/* set before mod.open() */
qse_char_t* name;
/* set before mod.open().
* mod.open() and other callbacks can refer to these. */
qse_httpd_t* httpd;
qse_char_t* name; /* portable module name */
qse_char_t* fullname; /* name to use when loading module from the system. */
/* manipulatable by the implementer */
void* handle;
/* mod.open() may set this */
void* handle; /* mod.open() can set this */
/* module's entry point may set these items */
void* ctx;
qse_httpd_mod_unload_t unload;
qse_httpd_mod_urs_prerewrite_t urs_prerewrite;
/* private */
qse_httpd_mod_t* next;
@ -686,6 +726,7 @@ struct qse_httpd_rsrc_proxy_t
qse_httpd_natr_t dns_server;
qse_httpd_natr_t urs_server;
qse_httpd_mod_t* urs_prerewrite_mod;
/* optional pseudonym to use for Via: */
const qse_mchar_t* pseudonym;

View File

@ -64,7 +64,7 @@ struct qse_httpd_serverstd_root_t
const qse_mchar_t* mime;
} text;
struct qse_httpd_rsrc_proxy_t proxy;
qse_httpd_rsrc_proxy_t proxy;
struct
{