jsocketpp 1.0
A cross-platform C++20 socket library.
Loading...
Searching...
No Matches
BufferView.hpp
Go to the documentation of this file.
1
5
6#pragma once
7
8#include "common.hpp"
9
10#include <span>
11
12namespace jsocketpp
13{
43{
44 void* data{};
45 std::size_t size{};
46};
47
48namespace internal
49{
50#ifdef _WIN32
51
73[[nodiscard]] inline std::vector<WSABUF> toWSABUF(const BufferView* buffers, const std::size_t count)
74{
75 std::vector<WSABUF> vec(count);
76 for (std::size_t i = 0; i < count; ++i)
77 {
78 vec[i].len = static_cast<ULONG>(buffers[i].size);
79 vec[i].buf = static_cast<CHAR*>(buffers[i].data);
80 }
81 return vec;
82}
83
102[[nodiscard]] inline std::vector<WSABUF> toWSABUF(const std::span<const BufferView> buffers)
103{
104 return toWSABUF(buffers.data(), buffers.size());
105}
106
107#else
108
130[[nodiscard]] inline std::vector<iovec> toIOVec(const BufferView* buffers, const std::size_t count)
131{
132 std::vector<iovec> vec(count);
133 for (std::size_t i = 0; i < count; ++i)
134 {
135 vec[i].iov_base = buffers[i].data;
136 vec[i].iov_len = buffers[i].size;
137 }
138 return vec;
139}
140
161[[nodiscard]] inline std::vector<iovec> toIOVec(const std::span<const BufferView> buffers)
162{
163 return toIOVec(buffers.data(), buffers.size());
164}
165
166#endif
167} // namespace internal
168
169} // 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:130
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:73
Implementation-only utilities and platform abstractions for jsocketpp.
Definition BufferView.hpp:49
A C++ socket library providing Java-style networking interfaces.
Definition BufferView.hpp:13
Represents a raw writable memory region for scatter/gather I/O.
Definition BufferView.hpp:43
void * data
Pointer to the writable memory region.
Definition BufferView.hpp:44
std::size_t size
Size in bytes of the writable region.
Definition BufferView.hpp:45