uvco 0.1
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
uvco::FsWatch::FsWatchAwaiter_ Struct Reference
Collaboration diagram for uvco::FsWatch::FsWatchAwaiter_:
Collaboration graph
[legend]

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.h:172
BoundedQueue< FileEvent > events_
Definition fs.h:186

Member Function Documentation

◆ addError()

void uvco::FsWatch::FsWatchAwaiter_::addError ( uv_status  status)
405 {
406 if (!events_.hasSpace()) {
407 fmt::print(stderr, "uvco dropped FS event error {}", uv_strerror(status));
408 }
409 events_.put(FileEvent{status});
410}

◆ addEvent()

void uvco::FsWatch::FsWatchAwaiter_::addEvent ( FileEvent  event)
412 {
413 if (!events_.hasSpace()) {
414 fmt::print(stderr, "uvco dropped FS event on {} due to queue overload\n",
415 event.path);
416 return;
417 }
418 events_.put(std::move(event));
419}

◆ await_ready()

bool uvco::FsWatch::FsWatchAwaiter_::await_ready ( ) const
377 {
378 return stopped_ || !events_.empty();
379}
bool stopped_
Definition fs.h:187

◆ await_resume()

bool uvco::FsWatch::FsWatchAwaiter_::await_resume ( )
386 {
387 handle_.reset();
388 BOOST_ASSERT(stopped_ || !events_.empty());
389 return !stopped_;
390}
std::optional< std::coroutine_handle<> > handle_
Definition fs.h:185

◆ await_suspend()

void uvco::FsWatch::FsWatchAwaiter_::await_suspend ( std::coroutine_handle<>  handle)
381 {
382 BOOST_ASSERT(!handle_);
383 handle_ = handle;
384}

◆ schedule()

void uvco::FsWatch::FsWatchAwaiter_::schedule ( )
392 {
393 if (handle_) {
394 std::coroutine_handle<> handle = handle_.value();
395 handle_.reset();
396 Loop::enqueue(handle);
397 }
398}
static void enqueue(std::coroutine_handle<> handle)
Definition loop.cc:73

◆ stop()

void uvco::FsWatch::FsWatchAwaiter_::stop ( )
400 {
401 stopped_ = true;
402 schedule();
403}
void schedule()
Definition fs.cc:392

Member Data Documentation

◆ defaultCapacity

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

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