/* See LICENSE file for copyright and license details. */
|
|
#ifndef CONNECTION_H
|
|
#define CONNECTION_H
|
|
|
|
#include "http.h"
|
|
#include "server.h"
|
|
#include "util.h"
|
|
|
|
enum connection_state {
|
|
C_VACANT,
|
|
C_RECV_HEADER,
|
|
C_SEND_HEADER,
|
|
C_SEND_BODY,
|
|
NUM_CONN_STATES,
|
|
};
|
|
|
|
struct connection {
|
|
enum connection_state state;
|
|
int fd;
|
|
struct sockaddr_storage ia;
|
|
struct request req;
|
|
struct response res;
|
|
struct buffer buf;
|
|
size_t progress;
|
|
};
|
|
|
|
struct connection *connection_accept(int, struct connection *, size_t);
|
|
void connection_log(const struct connection *);
|
|
void connection_reset(struct connection *);
|
|
void connection_serve(struct connection *, const struct server *);
|
|
|
|
#endif /* CONNECTION_H */
|