2
0
Fork 0
lighttpd2/src/modules/fastcgi_stream.h

56 lines
2.0 KiB
C

#ifndef _LIGHTTPD_FASTCGI_STREAM_H_
#define _LIGHTTPD_FASTCGI_STREAM_H_
#include <lighttpd/base.h>
#include <lighttpd/backends.h>
typedef struct liFastCGIBackendCallbacks liFastCGIBackendCallbacks;
typedef struct liFastCGIBackendWait liFastCGIBackendWait;
typedef struct liFastCGIBackendConnection liFastCGIBackendConnection;
typedef struct liFastCGIBackendPool liFastCGIBackendPool;
typedef struct liFastCGIBackendConfig liFastCGIBackendConfig;
typedef void (*liFastCGIBackendConnectionResetCB)(liVRequest *vr, liFastCGIBackendPool *pool, liFastCGIBackendConnection *bcon);
typedef void (*liFastCGIBackendConnectionEndRequestCB)(liVRequest *vr, liFastCGIBackendPool *pool, liFastCGIBackendConnection *bcon, guint32 appStatus);
typedef void (*liFastCGIBackendConnectionStderrCB)(liVRequest *vr, liFastCGIBackendPool *pool, liFastCGIBackendConnection *bcon, GString *message);
struct liFastCGIBackendConnection {
gpointer data;
};
struct liFastCGIBackendCallbacks {
liFastCGIBackendConnectionResetCB reset_cb;
liFastCGIBackendConnectionEndRequestCB end_request_cb;
liFastCGIBackendConnectionStderrCB fastcgi_stderr_cb;
};
struct liFastCGIBackendPool {
liBackendPool *subpool;
};
struct liFastCGIBackendConfig {
const liFastCGIBackendCallbacks *callbacks;
/* see liBackendConfig */
liSocketAddress sock_addr;
int max_connections;
guint idle_timeout;
guint connect_timeout;
guint wait_timeout;
guint disable_time;
int max_requests;
};
/* config gets copied, can be freed after this call */
LI_API liFastCGIBackendPool* li_fastcgi_backend_pool_new(const liFastCGIBackendConfig *config);
LI_API void li_fastcgi_backend_pool_free(liFastCGIBackendPool *bpool);
LI_API liBackendResult li_fastcgi_backend_get(liVRequest *vr, liFastCGIBackendPool *bpool, liFastCGIBackendConnection **pbcon, liFastCGIBackendWait **pbwait);
LI_API void li_fastcgi_backend_wait_stop(liVRequest *vr, liFastCGIBackendPool *bpool, liFastCGIBackendWait **pbwait);
/* only call from reset or end_request callbacks */
LI_API void li_fastcgi_backend_put(liFastCGIBackendConnection *bcon);
#endif