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;