jsocketpp 1.0
A cross-platform C++20 socket library.
Loading...
Searching...
No Matches
BufferView.hpp
Go to the documentation of this file.
1
8
9#pragma once
10
11#include "common.hpp"
12
13#include <span>
14
15namespace jsocketpp
16{
46{
47 void* data{};
48 std::size_t size{};
49};
50
51namespace internal
52{
53#ifdef _WIN32
54
76[[nodiscard]] inline std::vector<WSABUF> toWSABUF(const BufferView* buffers, const std::size_t count)
77{
78 std::vector<WSABUF> vec(count);
79 for (std::size_t i = 0; i < count; ++i)
80 {
81 vec[i].len = static_cast<ULONG>(buffers[i].size);
82 vec[i].buf = static_cast<CHAR*>(buffers[i].data);
83 }
84 return vec;
85}
86
105[[nodiscard]] inline std::vector<WSABUF> toWSABUF(const std::span<const BufferView> buffers)
106{
107 return toWSABUF(buffers.data(), buffers.size());
108}
109
110#else
111
133[[nodiscard]] inline std::vector<iovec> toIOVec(const BufferView* buffers, const std::size_t count)
134{
135 std::vector<iovec> vec(count);
136 for (std::size_t i = 0; i < count; ++i)
137 {
138 vec[i].iov_base = buffers[i].data;
139 vec[i].iov_len = buffers[i].size;
140 }
141 return vec;
142}
143
164[[nodiscard]] inline std::vector<iovec> toIOVec(const std::span<const BufferView> buffers)
165{
166 return toIOVec(buffers.data(), buffers.size());
167}
168
169#endif
170} // namespace internal
171
172} // namespace jsocketpp
Common platform and utility includes for jsocketpp.
std::vector< iovec > toIOVec(const BufferView *buffers, const std::size_t count)
Convert a raw array of BufferView elements into an iovec array for POSIX readv/writev.
Definition BufferView.hpp:133
std::vector< WSABUF > toWSABUF(const BufferView *buffers, const std::size_t count)
Convert a raw array of BufferView elements into a WSABUF array for use with Windows socket APIs.
Definition BufferView.hpp:76
Implementation-only utilities and platform abstractions for jsocketpp.
Definition BufferView.hpp:52
A C++ socket library providing Java-style networking interfaces.
Definition BufferView.hpp:16
Represents a raw writable memory region for scatter/gather I/O.
Definition BufferView.hpp:46
void * data
Pointer to the writable memory region.
Definition BufferView.hpp:47
std::size_t size
Size in bytes of the writable region.
Definition BufferView.hpp:48