#ifndef HTTP_SERVER_H #define HTTP_SERVER_H #include #include #include #ifndef DEFAULT_HTML #define DEFAULT_HTML "index.html" #endif typedef enum { HTTP_SRS_RUNNING = 0, HTTP_SRS_SETUP, HTTP_SRS_STOPPED, HTTP_SRS_SOCKET_FAILED, HTTP_SRS_SETSOCKOPT_FAILED, HTTP_SRS_BIND_FAILED, HTTP_SRS_LISTEN_FAILED, HTTP_SRS_ACCEPT_FAILED, HTTP_SRS_READ_FAILED, HTTP_SRS_HANDLE_REQUEST_FAILED, HTTP_SRS_FORK_FAILED, HTTP_SRS_WONT_HANDLE, HTTP_SRS_FILE_NOT_FOUND, } HttpServerRunStatus; // Structure ayant pour objectif de stocker tout ce qui est nécessaire au bon // fonctionnement du serveur. typedef struct { int port; // Port du host int server_fd; // File descriptor du server unsigned int backlog; // Le nombre de clients possibles pouvant être en attente. struct sockaddr_in *address; // L'adresse décrivant une socket internet. pid_t pid; // Le pid du parent en attente de requêtes. } HttpServer; // On setup le server, avec son file descriptor, ses options, le bind et le // listen. HttpServerRunStatus http_server_setup(HttpServer *s); // Si tout est ok, on peut lancer le server, tant qu'il tourne, il peut // recevoir des clients. HttpServerRunStatus http_server_run(HttpServer *s); // Si pour quelques raisons il s'arrête, on free tout ce qu'il doit être // free. HttpServerRunStatus http_server_stop(HttpServer *s); #endif