3#ifndef SYMBIAN_HTTP_CONNECTION_H_
4#define SYMBIAN_HTTP_CONNECTION_H_
31 static absl::StatusOr<std::unique_ptr<Connection>>
Client(
34 std::optional<std::size_t> body_length = 0,
35 absl::Time deadline = absl::InfiniteFuture());
36 static absl::StatusOr<std::unique_ptr<Connection>>
Accept(
37 std::unique_ptr<net::ByteStream> transport,
39 absl::Time deadline = absl::InfiniteFuture());
49 absl::StatusOr<std::optional<std::string>>
Read(absl::Time deadline);
52 std::optional<std::size_t> body_length = std::nullopt);
53 absl::Status
Write(std::string_view
bytes, absl::Time deadline);
54 absl::Status
Finish(absl::Time deadline);
60 absl::Status Initialize();
61 absl::Status Pump(absl::Time deadline);
62 absl::Status Flush(absl::Time deadline);
63 absl::Status Send(std::string_view
bytes, absl::Time deadline);
64 absl::Status ReadHead(absl::Time deadline);
65 absl::Status Fail(absl::Status status);
66 absl::Status PrepareOutput(
Headers* headers,
67 std::optional<std::size_t> length,
bool no_body);
68 std::unique_ptr<net::ByteStream> transport_;
72 std::unique_ptr<Http2> h2_;
76 internal::BodyPlan plan_;
77 internal::ChunkedDecoder decoder_;
79 std::size_t read_bytes_ = 0, written_bytes_ = 0;
80 std::optional<std::size_t> write_length_;
81 bool received_head_ =
false, sent_head_ =
false, eof_ =
false;
82 bool read_end_ =
false, write_end_ =
false, no_write_body_ =
false;
Worker-owned HTTP exchange with pull bodies and a response writer.
Definition connection.h:29
absl::Status SendHeaders(ResponseHead head, absl::Time deadline, std::optional< std::size_t > body_length=std::nullopt)
Definition connection.cc:383
static absl::StatusOr< std::unique_ptr< Connection > > Client(std::unique_ptr< net::ByteStream > transport, RequestHead request, Protocol protocol=Protocol::kHttp11, Limits limits={}, std::optional< std::size_t > body_length=0, absl::Time deadline=absl::InfiniteFuture())
Definition connection.cc:140
const ResponseHead & response() const
Definition connection.h:44
void Abort()
Definition connection.cc:28
absl::Status ReceiveHeaders(absl::Time deadline)
Definition connection.cc:306
absl::Status Finish(absl::Time deadline)
Definition connection.cc:456
const RequestHead & request() const
Definition connection.h:42
~Connection()
Definition connection.cc:16
const Headers & trailers() const
Definition connection.h:46
absl::StatusOr< std::optional< std::string > > Read(absl::Time deadline)
Definition connection.cc:310
absl::Status Write(std::string_view bytes, absl::Time deadline)
Definition connection.cc:415
static absl::StatusOr< std::unique_ptr< Connection > > Accept(std::unique_ptr< net::ByteStream > transport, Protocol protocol=Protocol::kHttp11, Limits limits={}, absl::Time deadline=absl::InfiniteFuture())
Definition connection.cc:186
Dependency-free HTTP/1.1 message parsing and serialization.
Definition connection.cc:8
std::vector< std::pair< std::string, std::string > > Headers
Definition types.h:15
Role
Definition types.h:16
Protocol
Definition connection.h:12
std::string_view bytes
Definition exports.cc:74