39 lines
1.4 KiB
C
39 lines
1.4 KiB
C
#pragma once
|
|
#include "uv.h"
|
|
#include "haywire.h"
|
|
#include "http_connection.h"
|
|
#include "http_parser.h"
|
|
#include "http_response.h"
|
|
|
|
typedef struct {
|
|
http_request_callback callback;
|
|
void *user_data;
|
|
} hw_route_entry;
|
|
|
|
union stream_handle {
|
|
uv_pipe_t pipe;
|
|
uv_tcp_t tcp;
|
|
};
|
|
|
|
extern void *routes;
|
|
extern uv_loop_t *uv_loop;
|
|
extern hw_string *http_v1_0;
|
|
extern hw_string *http_v1_1;
|
|
extern hw_string *server_name;
|
|
extern int listener_count;
|
|
extern uv_async_t *listener_async_handles;
|
|
extern uv_loop_t *listener_event_loops;
|
|
extern uv_barrier_t *listeners_created_barrier;
|
|
|
|
void (*http_stream_on_read)(uv_stream_t *, ssize_t, const uv_buf_t *);
|
|
int (*http_server_write_response)(hw_write_context *, hw_string *);
|
|
|
|
http_connection *create_http_connection();
|
|
void http_stream_on_connect(uv_stream_t *stream, int status);
|
|
void http_stream_on_alloc(uv_handle_t *client, size_t suggested_size, uv_buf_t *buf);
|
|
void http_stream_on_close(uv_handle_t *handle);
|
|
int http_server_write_response_single(hw_write_context *write_context, hw_string *response);
|
|
void http_server_after_write(uv_write_t *req, int status);
|
|
void http_stream_on_read_http_parser(uv_stream_t *tcp, ssize_t nread, const uv_buf_t *buf);
|
|
void reuseport_thread_start(void *arg);
|