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:321
BoundedQueue< FileEvent > events_
Definition fs.cc:335

Member Function Documentation

◆ addError()

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

◆ addEvent()

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

◆ await_ready()

bool uvco::FsWatch::FsWatchAwaiter_::await_ready ( ) const
nodiscard
341 {
342 return stopped_ || !events_.empty();
343}
bool stopped_
Definition fs.cc:336

◆ await_resume()

bool uvco::FsWatch::FsWatchAwaiter_::await_resume ( )
350 {
351 handle_.reset();
352 BOOST_ASSERT(stopped_ || !events_.empty());
353 return !stopped_;
354}
std::optional< std::coroutine_handle<> > handle_
Definition fs.cc:334

◆ await_suspend()

void uvco::FsWatch::FsWatchAwaiter_::await_suspend ( std::coroutine_handle<> handle)
345 {
346 BOOST_ASSERT(!handle_);
347 handle_ = handle;
348}

◆ schedule()

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

◆ stop()

void uvco::FsWatch::FsWatchAwaiter_::stop ( )
364 {
365 stopped_ = true;
366 schedule();
367}
void schedule()
Definition fs.cc:356

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_ {}
336{};

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