Symbian platform (C++)
SDK native APIs, runtime and tooling
Loading...
Searching...
No Matches
http.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_API_CONNECTIVITY_HTTP_H_
4#define SYMBIAN_API_CONNECTIVITY_HTTP_H_
8
17 public:
18 static absl::StatusOr<std::unique_ptr<http::Connection>> ConnectHost(
19 std::string_view hostname, std::uint16_t port, http::RequestHead request,
20 absl::Time deadline = absl::InfiniteFuture(),
22 http::Limits limits = {}, std::optional<std::size_t> body_length = 0) {
23 if (request.scheme != "http") {
24 return absl::InvalidArgumentError("HTTPS requires a verified TLS stream");
25 }
26 auto tcp = TcpClient::ConnectHost(hostname, port, deadline);
27 if (!tcp.ok()) {
28 return tcp.status();
29 }
31 std::make_unique<TcpByteStream>(std::move(*tcp)), std::move(request),
32 protocol, limits, body_length, deadline);
33 }
34
35 static absl::StatusOr<std::unique_ptr<http::Connection>> ConnectIpv4(
36 std::array<std::uint8_t, 4> address, std::uint16_t port,
37 http::RequestHead request,
39 absl::Time deadline = absl::InfiniteFuture(), http::Limits limits = {},
40 std::optional<std::size_t> body_length = 0) {
41 if (request.scheme != "http") {
42 return absl::InvalidArgumentError("HTTPS requires a verified TLS stream");
43 }
44 auto tcp = TcpClient::ConnectIpv4(address, port, deadline);
45 if (!tcp.ok()) {
46 return tcp.status();
47 }
49 std::make_unique<TcpByteStream>(std::move(*tcp)), std::move(request),
50 protocol, limits, body_length, deadline);
51 }
52};
53
56 public:
57 static absl::StatusOr<HttpServer> ListenIpv4(
58 std::array<std::uint8_t, 4> address, std::uint16_t port,
60 http::Limits limits = {}) {
61 auto listener = TcpListener::ListenIpv4(address, port);
62 if (!listener.ok()) {
63 return listener.status();
64 }
65 return HttpServer(std::move(*listener), protocol, limits);
66 }
67
68 absl::StatusOr<std::unique_ptr<http::Connection>> Accept(
69 absl::Time deadline) {
70 auto tcp = listener_.Accept(deadline);
71 if (!tcp.ok()) {
72 return tcp.status();
73 }
75 std::make_unique<TcpByteStream>(std::move(*tcp)), protocol_, limits_,
76 deadline);
77 }
78
79 private:
80 HttpServer(TcpListener listener, http::Protocol protocol, http::Limits limits)
81 : listener_(std::move(listener)), protocol_(protocol), limits_(limits) {}
82
83 TcpListener listener_;
84 http::Protocol protocol_;
85 http::Limits limits_;
86};
87} // namespace symbian::api::connectivity
88#endif
Native HTTP client over the existing worker-owned TCP runtime.
Definition http.h:16
static absl::StatusOr< std::unique_ptr< http::Connection > > ConnectHost(std::string_view hostname, std::uint16_t port, http::RequestHead request, absl::Time deadline=absl::InfiniteFuture(), http::Protocol protocol=http::Protocol::kHttp11, http::Limits limits={}, std::optional< std::size_t > body_length=0)
Definition http.h:18
static absl::StatusOr< std::unique_ptr< http::Connection > > ConnectIpv4(std::array< std::uint8_t, 4 > address, std::uint16_t port, http::RequestHead request, http::Protocol protocol=http::Protocol::kHttp11, absl::Time deadline=absl::InfiniteFuture(), http::Limits limits={}, std::optional< std::size_t > body_length=0)
Definition http.h:35
Native bounded HTTP listener; each accepted exchange owns its socket.
Definition http.h:55
absl::StatusOr< std::unique_ptr< http::Connection > > Accept(absl::Time deadline)
Definition http.h:68
static absl::StatusOr< HttpServer > ListenIpv4(std::array< std::uint8_t, 4 > address, std::uint16_t port, http::Protocol protocol=http::Protocol::kHttp11, http::Limits limits={})
Definition http.h:57
static absl::StatusOr< TcpClient > ConnectIpv4(std::array< std::uint8_t, 4 > address, std::uint16_t port, absl::Time deadline=absl::InfiniteFuture())
Connect to four IPv4 octets by an absolute deadline.
Definition tcp_client.cc:25
static absl::StatusOr< TcpClient > ConnectHost(std::string_view hostname, std::uint16_t port, absl::Time deadline=absl::InfiniteFuture())
Resolve an ASCII DNS hostname and connect by one deadline.
Definition tcp_client.cc:44
One bounded IPv4 listener backed by Symbian RSocket.
Definition tcp_listener.h:28
static absl::StatusOr< TcpListener > ListenIpv4(std::array< std::uint8_t, 4 > address, std::uint16_t port)
Bind and listen on an explicit four-octet IPv4 address.
Definition tcp_listener.cc:15
absl::StatusOr< TcpClient > Accept(absl::Time deadline=absl::InfiniteFuture())
Wait for one incoming stream until an absolute deadline.
Definition tcp_listener.cc:47
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
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
Definition exception_count.cc:8
Definition active_tcp_listener.cc:11
Protocol
Definition connection.h:12
uint32_t address
Definition exports.cc:69
Definition types.h:32
Definition types.h:18
std::string scheme
Definition types.h:20