28class [[nodiscard]] TlsWrapper
final :
public RwBase {
31 static TlsWrapper
StartTlsClient(Socket&& socket,
const std::string& server_name, Deadline deadline);
36 const std::string& server_name,
46 ~TlsWrapper()
override;
48 TlsWrapper(
const TlsWrapper&) =
delete;
49 TlsWrapper(TlsWrapper&&)
noexcept;
68 [[nodiscard]] size_t
RecvSome(
void* buf, size_t len, Deadline deadline);
76 [[nodiscard]] std::optional<size_t>
RecvNoblock(
void* buf, size_t len);
80 [[nodiscard]] size_t
RecvAll(
void* buf, size_t len, Deadline deadline);
84 [[nodiscard]] size_t
SendAll(
const void* buf, size_t len, Deadline deadline);
89 [[nodiscard]] Socket
StopTls(Deadline deadline);
102 [[nodiscard]] size_t
ReadSome(
void* buf, size_t len, Deadline deadline)
override {
108 [[nodiscard]] size_t
ReadAll(
void* buf, size_t len, Deadline deadline)
override {
114 [[nodiscard]] size_t
WriteAll(
const void* buf, size_t len, Deadline deadline)
override {
118 [[nodiscard]] size_t WriteAll(std::initializer_list<IoData> list, Deadline deadline)
override;
123 explicit TlsWrapper(Socket&&);
125 void SetupContextAccessors();
128 class ReadContextAccessor;
129 constexpr static size_t kSize = 336;
130 constexpr static size_t kAlignment = 8;
131 utils::FastPimpl<Impl, kSize, kAlignment> impl_;