lib/http/src/root.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 //! Http parses and writes HTTP/1.1 requests and responses and WebSocket frames,
2 //! and routes requests to handlers. Callers set storage limits and provide
3 //! parsing storage, and parsing reports that more input is needed when a
4 //! request is incomplete.
5 //!
6 //! Parsed request method, path, header names, and header values borrow slices
7 //! of the input bytes, while header entry records themselves are placed in
8 //! caller-provided header storage. A body with a fixed length borrows input
9 //! bytes. For a chunked request, the input parameter is immutable: the parser
10 //! reads the input, removes the framing, and writes decoded chunked-body bytes
11 //! into a separate caller-provided body buffer. Client response headers and
12 //! body are stored in caller-provided response storage and borrow that storage.
13 //!
14 //! Returned slices are valid while their backing storage remains alive and
15 //! unchanged, so callers copy values they retain across overwrite or storage
16 //! reuse.
17
18 const server = @import("server/root.zig");
19 const connection = @import("connection.zig");
20 const message = @import("message.zig");
21 const response = @import("response.zig");
22 const writer = @import("writer.zig");
23 const websocket = @import("websocket.zig");
24 const pool = @import("pool.zig");
25 const router = @import("router/root.zig");
26 const client = @import("client/root.zig");
27 pub const chunk = @import("chunk.zig");
28
29 pub const Server = server.Server;
30 pub const Connection = connection.Connection;
31 pub const ConnectionInputLimits = connection.InputLimits;
32 pub const ConnectionInputCapacity = connection.InputCapacity;
33 pub const ConnectionInputStorage = connection.InputStorage;
34 pub const ConnectionInputStatus = connection.InputStatus;
35 pub const default_connection_input_bytes_per_connection =
36 connection.default_input_bytes_per_connection;
37 pub const Request = message.Request;
38 pub const RequestHeader = message.RequestHeader;
39 pub const RequestHeaders = message.RequestHeaders;
40 pub const RequestLimits = message.RequestLimits;
41 pub const RequestCapacity = message.RequestCapacity;
42 pub const RequestStorage = message.RequestStorage;
43 pub const RequestScratch = message.RequestScratch;
44 pub const RequestParseResult = message.RequestParseResult;
45 pub const default_request_header_count = message.default_request_header_count;
46 pub const default_request_header_line_bytes = message.default_request_header_line_bytes;
47 pub const default_request_body_bytes = message.default_request_body_bytes;
48 pub const Response = response.Response;
49 pub const ResponseHeader = response.Header;
50 pub const ResponseHeaders = response.Headers;
51 pub const ResponseLimits = response.Limits;
52 pub const ResponseCapacity = response.Capacity;
53 pub const ResponseStorage = response.Storage;
54 pub const ResponseScratch = response.Scratch;
55 pub const ResponseSerialized = response.Serialized;
56 pub const ResponseError = response.Error;
57 pub const default_response_header_count = response.default_header_count;
58 pub const default_response_head_bytes = response.default_head_bytes;
59 pub const ParseError = message.ParseError;
60 pub const ChunkedWriter = writer.ChunkedWriter;
61 pub const WebSocket = websocket.WebSocket;
62 pub const WebSocketLimits = websocket.Limits;
63 pub const WebSocketCapacity = websocket.Capacity;
64 pub const WebSocketStorage = websocket.Storage;
65 pub const WebSocketState = websocket.WebSocketState;
66 pub const WebSocketCloseCode = websocket.WebSocketCloseCode;
67 pub const WebSocketClientHandshake = websocket.WebSocketClientHandshake;
68 pub const WebSocketMessage = websocket.WebSocketMessage;
69 pub const Frame = websocket.Frame;
70 pub const FrameParseResult = websocket.FrameParseResult;
71 pub const Opcode = websocket.Opcode;
72 pub const FrameError = websocket.FrameError;
73 pub const HandshakeError = websocket.HandshakeError;
74 pub const ThreadPool = pool.ThreadPool;
75 pub const Router = router.Router;
76 pub const upgradeWebsocket = router.upgradeWebsocket;
77 pub const controlled = client.controlled;
78 pub const Client = client.Client;
79 pub const ClientWebSocket = client.ClientWebSocket;
80 pub const ClientWebSocketLimits = client.WebSocketLimits;
81 pub const ClientWebSocketCapacity = client.WebSocketCapacity;
82 pub const ClientWebSocketStorage = client.WebSocketStorage;
83 pub const ClientWebSocketScratch = client.WebSocketScratch;
84 pub const ClientOperation = client.ClientOperation;
85 pub const ClientOperationLimits = client.OperationLimits;
86 pub const ClientOperationCapacity = client.OperationCapacity;
87 pub const ClientOperationStorage = client.OperationStorage;
88 pub const ClientOperationScratch = client.OperationScratch;
89 pub const ClientOperationError = client.OperationError;
90 pub const default_client_operation_host_bytes = client.default_operation_host_bytes;
91 pub const default_client_operation_target_bytes = client.default_operation_target_bytes;
92 pub const default_client_operation_plain_read_bytes = client.default_operation_plain_read_bytes;
93 pub const default_client_operation_plain_write_bytes = client.default_operation_plain_write_bytes;
94 pub const ClientResponse = client.ClientResponse;
95 pub const ClientResponseLimits = client.ResponseLimits;
96 pub const ClientResponseCapacity = client.ResponseCapacity;
97 pub const ClientResponseStorage = client.ResponseStorage;
98 pub const ClientResponseScratch = client.ResponseScratch;
99 pub const ClientResponseError = client.ResponseError;
100 pub const default_client_response_header_count = client.default_response_header_count;
101 pub const default_client_response_head_bytes = client.default_response_head_bytes;
102 pub const default_client_response_body_bytes = client.default_response_body_bytes;
103 pub const ClientError = client.ClientError;
104 pub const ClientStream = client.ClientStream;
105 pub const ClientStreamLimits = client.StreamLimits;
106 pub const ClientStreamCapacity = client.StreamCapacity;
107 pub const ClientStreamStorage = client.StreamStorage;
108 pub const ClientStreamScratch = client.StreamScratch;
109 pub const ClientStreamError = client.StreamError;
110 pub const default_client_stream_header_count = client.default_stream_header_count;
111 pub const default_client_stream_head_bytes = client.default_stream_head_bytes;
112 pub const StreamHandler = client.StreamHandler;
113 pub const StreamHandlerVTable = client.StreamHandlerVTable;
114 pub const Header = client.Header;
115
116 pub const WebsocketStorage = @import("websocket.zig").Storage;