|
| static void | allocate (uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf) |
| static void | onInStreamRead (uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf) |
◆ InStreamAwaiter_()
| uvco::StreamBase::InStreamAwaiter_::InStreamAwaiter_ |
( |
StreamBase & | stream, |
|
|
std::span< char > | buffer ) |
|
inlineexplicit |
uv_stream_t & stream()
Definition stream.h:105
std::span< char > buffer_
Definition stream.cc:58
StreamBase & stream_
Definition stream.cc:57
◆ ~InStreamAwaiter_()
| uvco::StreamBase::InStreamAwaiter_::~InStreamAwaiter_ |
( |
| ) |
|
172 {
173 if (
stream_.underlying() !=
nullptr &&
174 1 == uv_is_active((
const uv_handle_t *)
stream_.underlying())) {
176 }
177
178 if (
stream_.stream_ !=
nullptr) {
180 }
182}
void resetData(Handle *handle)
Reset data pointer on handle to nullptr.
Definition internal_utils.h:83
void stop_read()
Definition stream.cc:242
◆ allocate()
| void uvco::StreamBase::InStreamAwaiter_::allocate |
( |
uv_handle_t * | handle, |
|
|
size_t | suggested_size, |
|
|
uv_buf_t * | buf ) |
|
static |
225 {
227 BOOST_ASSERT(awaiter != nullptr);
228 *buf = uv_buf_init(const_cast<char *>(awaiter->buffer_.data()),
229 awaiter->buffer_.size());
230}
Into * getData(const Handle *handle)
Obtain data pointer set on handle with nullptr check and type cast.
Definition internal_utils.h:42
InStreamAwaiter_(StreamBase &stream, std::span< char > buffer)
Definition stream.cc:41
◆ await_ready()
| bool uvco::StreamBase::InStreamAwaiter_::await_ready |
( |
| ) |
|
184 {
185 const int state = uv_is_readable(&
stream_.stream());
186 if (state == 1) {
187
188
191 }
193}
std::optional< ssize_t > status_
Definition stream.cc:59
void start_read()
Definition stream.cc:232
◆ await_resume()
| size_t uvco::StreamBase::InStreamAwaiter_::await_resume |
( |
| ) |
|
205 {
207 return 0;
208 }
212 return 0;
213 }
215 throw UvcoException{
static_cast<uv_status>(*status_),
216 "StreamBase::read() encountered error"};
217 }
218 BOOST_ASSERT(
status_.value() >= 0);
219 return static_cast<size_t>(
status_.value());
220}
int uv_status
Result of a libuv operation, an errno error code.
Definition internal_utils.h:22
◆ await_suspend()
| bool uvco::StreamBase::InStreamAwaiter_::await_suspend |
( |
std::coroutine_handle<> | handle | ) |
|
196 {
202 return true;
203}
void setData(Handle *handle, Data *data)
Obtain data pointer set on request with type cast. Data may be nullptr.
Definition internal_utils.h:77
bool dataIsNull(Handle *handle)
Check if handle data is null.
Definition internal_utils.h:101
std::coroutine_handle handle_
Definition stream.cc:60
◆ onInStreamRead()
| void uvco::StreamBase::InStreamAwaiter_::onInStreamRead |
( |
uv_stream_t * | stream, |
|
|
ssize_t | nread, |
|
|
const uv_buf_t * | buf ) |
|
static |
252 {
254 BOOST_ASSERT(awaiter != nullptr);
255 awaiter->stop_read();
256 awaiter->status_ = nread;
257
258 if (awaiter->handle_) {
260 awaiter->handle_ = nullptr;
261 }
263}
static void enqueue(std::coroutine_handle<> handle)
Definition loop.cc:94
◆ start_read()
| void uvco::StreamBase::InStreamAwaiter_::start_read |
( |
| ) |
|
232 {
236 if (result != 0) {
237 throw UvcoException{
238 result, "StreamBase::read() encountered error in uv_read_start()"};
239 }
240}
static void allocate(uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf)
Definition stream.cc:223
static void onInStreamRead(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf)
Definition stream.cc:250
◆ stop_read()
| void uvco::StreamBase::InStreamAwaiter_::stop_read |
( |
| ) |
|
242 {
243
245 uv_read_stop(&
stream_.stream());
246 }
247}
◆ buffer_
| std::span<char> uvco::StreamBase::InStreamAwaiter_::buffer_ |
◆ handle_
| std::coroutine_handle uvco::StreamBase::InStreamAwaiter_::handle_ |
◆ status_
| std::optional<ssize_t> uvco::StreamBase::InStreamAwaiter_::status_ |
◆ stream_
| StreamBase& uvco::StreamBase::InStreamAwaiter_::stream_ |
The documentation for this struct was generated from the following file: