improved qse_httpd_entask() and related functions

This commit is contained in:
2011-07-20 10:18:54 +00:00
parent 46c7cd9484
commit 618f8bcf1f
3 changed files with 584 additions and 320 deletions

View File

@ -38,11 +38,11 @@ enum qse_httpd_errnum_t
QSE_HTTPD_ESOCKET,
QSE_HTTPD_EDISCON, /* client disconnnected */
QSE_HTTPD_EBADREQ, /* bad request */
QSE_HTTPD_ETASK,
QSE_HTTPD_ECOMCBS
};
typedef enum qse_httpd_errnum_t qse_httpd_errnum_t;
typedef struct qse_httpd_cbs_t qse_httpd_cbs_t;
struct qse_httpd_cbs_t
{
@ -50,6 +50,15 @@ struct qse_httpd_cbs_t
int (*handle_expect_continue) (qse_httpd_t* httpd, qse_httpd_client_t* client, qse_htre_t* req);
};
typedef struct qse_httpd_task_t qse_httpd_task_t;
struct qse_httpd_task_t
{
int (*init) (qse_httpd_t* httpd, qse_httpd_client_t* client, qse_httpd_task_t* task);
void (*fini) (qse_httpd_t* httpd, qse_httpd_client_t* client, qse_httpd_task_t* task);
int (*main) (qse_httpd_t* httpd, qse_httpd_client_t* client, qse_httpd_task_t* task);
void* ctx;
};
#ifdef __cplusplus
extern "C" {
#endif
@ -97,6 +106,33 @@ int qse_httpd_addlisteners (
const qse_char_t* uri
);
#define qse_httpd_gettaskxtn(httpd,task) ((void*)(task+1))
int qse_httpd_entask (
qse_httpd_t* httpd,
qse_httpd_client_t* client,
const qse_httpd_task_t* task,
qse_size_t xtnsize
);
int qse_httpd_entasksendtext (
qse_httpd_t* httpd,
qse_httpd_client_t* client,
const qse_mchar_t* text
);
int qse_httpd_entasksendfmt (
qse_httpd_t* httpd,
qse_httpd_client_t* client,
const qse_mchar_t* fmt,
...
);
int qse_httpd_entaskdisconnect (
qse_httpd_t* httpd,
qse_httpd_client_t* client
);
#ifdef __cplusplus
}
#endif