Symbian platform (C++)
SDK native APIs, runtime and tooling
Loading...
Searching...
No Matches
connection.h
Go to the documentation of this file.
1// Copyright 2026 The Symbian SDK Authors.
2// Licensed under the Apache License, Version 2.0.
3#ifndef SYMBIAN_HTTP_CONNECTION_H_
4#define SYMBIAN_HTTP_CONNECTION_H_
5#include <memory>
6
10
11namespace symbian::http {
12enum class Protocol { kHttp11, kHttp2 };
13
30 public:
31 static absl::StatusOr<std::unique_ptr<Connection>> Client(
32 std::unique_ptr<net::ByteStream> transport, RequestHead request,
33 Protocol protocol = Protocol::kHttp11, Limits limits = {},
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,
38 Protocol protocol = Protocol::kHttp11, Limits limits = {},
39 absl::Time deadline = absl::InfiniteFuture());
41
42 const RequestHead& request() const { return request_; }
43
44 const ResponseHead& response() const { return response_; }
45
46 const Headers& trailers() const { return trailers_; }
47
48 absl::Status ReceiveHeaders(absl::Time deadline);
49 absl::StatusOr<std::optional<std::string>> Read(absl::Time deadline);
50 absl::Status SendHeaders(
51 ResponseHead head, 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);
55 void Abort();
56
57 private:
58 Connection(std::unique_ptr<net::ByteStream> transport, Role role,
59 Protocol protocol, Limits limits);
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_;
69 Role role_;
70 Protocol protocol_;
71 Limits limits_;
72 std::unique_ptr<Http2> h2_;
73 RequestHead request_;
74 ResponseHead response_;
75 Headers trailers_;
76 internal::BodyPlan plan_;
77 internal::ChunkedDecoder decoder_;
78 std::string input_;
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;
83 absl::Status error_;
84};
85} // namespace symbian::http
86#endif
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
Definition types.h:32
Definition types.h:18
Definition types.h:27