/* WebROaR - Ruby Application Server - http://webroar.in/
* Copyright (C) 2009 Goonj LLC
*
* This file is part of WebROaR.
*
* WebROaR is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* WebROaR is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WebROaR. If not, see .
*/
#ifndef WR_CONNECTION_H_
#define WR_CONNECTION_H_
#include
/** Connection */
typedef struct {
wr_u_int id; /* Connection id */
ebb_connection *ebb_conn; /* EBB connection */
int resp_to_write; /* Number of bytes to be written*/
wr_svr_t *svr; /* Pointer to wr_svr_t */
wr_req_t *req; /* Pointer to wr_req_t */
short is_closed; /* Connection state flag */
short keep_alive; /**< HTTP connection keep alive state flag */
wr_str_list_t *resp;
}wr_conn_t;
/** Destroy Connection */
void wr_conn_free(wr_conn_t*);
/** Add response to Connection */
int wr_conn_resp_body_add(wr_conn_t*, const char*, size_t);
/** New connection call back
* Allocates and initializes an ebb_connection. NULL by default. */
ebb_connection* wr_new_conn_cb(ebb_server*, struct sockaddr_in*);
/************************/
/************** Errorneous response rendering API ***************/
/** Response Status Code **/
typedef enum {
WR_HTTP_STATUS_100 = 0 ,
WR_HTTP_STATUS_400 ,
WR_HTTP_STATUS_403 ,
WR_HTTP_STATUS_404 ,
WR_HTTP_STATUS_405 ,
WR_HTTP_STATUS_411 ,
WR_HTTP_STATUS_413 ,
WR_HTTP_STATUS_414 ,
WR_HTTP_STATUS_500 ,
WR_HTTP_STATUS_501 ,
WR_HTTP_STATUS_503
}wr_resp_status_t;
/** Response generated by Server */
void wr_conn_err_resp(wr_conn_t *, wr_resp_status_t);
#endif /*WR_CONNECTION_H_*/