uvco 0.1
Loading...
Searching...
No Matches
uvco::FsWatch::FsWatchAwaiter_ Struct Reference
Collaboration diagram for uvco::FsWatch::FsWatchAwaiter_:

Public Member Functions

 FsWatchAwaiter_ ()
bool await_ready () const
void await_suspend (std::coroutine_handle<> handle)
bool await_resume ()
void schedule ()
void stop ()
void addError (uv_status status)
void addEvent (FileEvent event)

Public Attributes

std::optional< std::coroutine_handle<> > handle_
BoundedQueue< FileEventevents_
bool stopped_ {}

Static Public Attributes

static constexpr unsigned defaultCapacity = 128

Constructor & Destructor Documentation

◆ FsWatchAwaiter_()

uvco::FsWatch::FsWatchAwaiter_::FsWatchAwaiter_ ( )
static constexpr unsigned defaultCapacity
Definition fs.cc:324
BoundedQueue< FileEvent > events_
Definition fs.cc:338

Member Function Documentation

◆ addError()

void uvco::FsWatch::FsWatchAwaiter_::addError ( uv_status status)
372 {
373 if (!events_.hasSpace()) {
374 fmt::print(stderr, "uvco dropped FS event error {}", uv_strerror(status));
375 }
376 events_.put(FileEvent{status});
377}

◆ addEvent()

void uvco::FsWatch::FsWatchAwaiter_::addEvent ( FileEvent event)
379 {
380 if (!events_.hasSpace()) {
381 fmt::print(stderr, "uvco dropped FS event on {} due to queue overload\n",
382 event.path);
383 return;
384 }
385 events_.put(std::move(event));
386}

◆ await_ready()

bool uvco::FsWatch::FsWatchAwaiter_::await_ready ( ) const
nodiscard
344 {
345 return stopped_ || !events_.empty();
346}
bool stopped_
Definition fs.cc:339

◆ await_resume()

bool uvco::FsWatch::FsWatchAwaiter_::await_resume ( )
353 {
354 handle_.reset();
355 BOOST_ASSERT(stopped_ || !events_.empty());
356 return !stopped_;
357}
std::optional< std::coroutine_handle<> > handle_
Definition fs.cc:337

◆ await_suspend()

void uvco::FsWatch::FsWatchAwaiter_::await_suspend ( std::coroutine_handle<> handle)
348 {
349 BOOST_ASSERT(!handle_);
350 handle_ = handle;
351}

◆ schedule()

void uvco::FsWatch::FsWatchAwaiter_::schedule ( )
359 {
360 if (handle_) {
361 std::coroutine_handle<> handle = handle_.value();
362 handle_.reset();
363 Loop::enqueue(handle);
364 }
365}
static void enqueue(std::coroutine_handle<> handle)
Definition loop.cc:94

◆ stop()

void uvco::FsWatch::FsWatchAwaiter_::stop ( )
367 {
368 stopped_ = true;
369 schedule();
370}
void schedule()
Definition fs.cc:359

Member Data Documentation

◆ defaultCapacity

unsigned uvco::FsWatch::FsWatchAwaiter_::defaultCapacity = 128
staticconstexpr

◆ events_

BoundedQueue<FileEvent> uvco::FsWatch::FsWatchAwaiter_::events_

◆ handle_

std::optional<std::coroutine_handle<> > uvco::FsWatch::FsWatchAwaiter_::handle_

◆ stopped_

bool uvco::FsWatch::FsWatchAwaiter_::stopped_ {}
339{};

The documentation for this struct was generated from the following file: