53 lines
1.2 KiB
C
53 lines
1.2 KiB
C
#include "chttp.h"
|
|
|
|
#ifdef _WIN32
|
|
#define POLL WSAPoll
|
|
#else
|
|
#define POLL poll
|
|
#endif
|
|
|
|
int main(void)
|
|
{
|
|
HTTP_Server server;
|
|
if (http_server_init(&server) < 0)
|
|
return -1;
|
|
|
|
http_server_set_reuse_addr(&server, true);
|
|
http_server_set_trace_bytes(&server, true);
|
|
|
|
if (http_server_listen_tcp(&server, HTTP_STR("127.0.0.1"), 8080) < 0)
|
|
return -1;
|
|
|
|
for (;;) {
|
|
|
|
void *ptrs[HTTP_SERVER_CAPACITY+3];
|
|
struct pollfd polled[HTTP_SERVER_CAPACITY+3];
|
|
|
|
EventRegister reg = {
|
|
.ptrs=ptrs,
|
|
.polled=polled,
|
|
.max_polled=HTTP_SERVER_CAPACITY+3,
|
|
.num_polled=0,
|
|
};
|
|
|
|
if (http_server_register_events(&server, ®) < 0)
|
|
return -1;
|
|
|
|
if (reg.num_polled > 0)
|
|
POLL(reg.polled, reg.num_polled, -1);
|
|
|
|
if (http_server_process_events(&server, ®) < 0)
|
|
return -1;
|
|
|
|
HTTP_Request *request;
|
|
HTTP_ResponseBuilder builder;
|
|
if (http_server_next_request(&server, &request, &builder)) {
|
|
http_response_builder_status(builder, 200);
|
|
http_response_builder_send(builder);
|
|
}
|
|
}
|
|
|
|
http_server_free(&server);
|
|
return 0;
|
|
}
|