xref: /third_party/node/deps/uvwasi/src/poll_oneoff.h (revision 1cb0ef41)
11cb0ef41Sopenharmony_ci#ifndef __UVWASI_POLL_ONEOFF_H__
21cb0ef41Sopenharmony_ci#define __UVWASI_POLL_ONEOFF_H__
31cb0ef41Sopenharmony_ci
41cb0ef41Sopenharmony_ci#include "fd_table.h"
51cb0ef41Sopenharmony_ci#include "wasi_types.h"
61cb0ef41Sopenharmony_ci
71cb0ef41Sopenharmony_cistruct uvwasi_s;
81cb0ef41Sopenharmony_ci
91cb0ef41Sopenharmony_cistruct uvwasi__poll_fdevent_t {
101cb0ef41Sopenharmony_ci  struct uvwasi_fd_wrap_t* wrap;
111cb0ef41Sopenharmony_ci  uvwasi_userdata_t userdata;
121cb0ef41Sopenharmony_ci  uvwasi_eventtype_t type;
131cb0ef41Sopenharmony_ci  uvwasi_errno_t error;
141cb0ef41Sopenharmony_ci  uv_poll_t* poll_handle;
151cb0ef41Sopenharmony_ci  int is_duplicate_fd;
161cb0ef41Sopenharmony_ci  int events;
171cb0ef41Sopenharmony_ci  int revents;
181cb0ef41Sopenharmony_ci};
191cb0ef41Sopenharmony_ci
201cb0ef41Sopenharmony_cistruct uvwasi_poll_oneoff_state_t {
211cb0ef41Sopenharmony_ci  struct uvwasi_s* uvwasi;
221cb0ef41Sopenharmony_ci  struct uvwasi__poll_fdevent_t* fdevents;
231cb0ef41Sopenharmony_ci  uv_poll_t* poll_handles;
241cb0ef41Sopenharmony_ci  uv_timer_t timer;
251cb0ef41Sopenharmony_ci  uint64_t timeout;
261cb0ef41Sopenharmony_ci  uv_loop_t loop;
271cb0ef41Sopenharmony_ci  uvwasi_size_t max_fds;
281cb0ef41Sopenharmony_ci  int has_timer;
291cb0ef41Sopenharmony_ci  uvwasi_size_t fdevent_cnt;
301cb0ef41Sopenharmony_ci  uvwasi_size_t handle_cnt;
311cb0ef41Sopenharmony_ci  int result;
321cb0ef41Sopenharmony_ci};
331cb0ef41Sopenharmony_ci
341cb0ef41Sopenharmony_ci
351cb0ef41Sopenharmony_ciuvwasi_errno_t uvwasi__poll_oneoff_state_init(
361cb0ef41Sopenharmony_ci                                      struct uvwasi_s* uvwasi,
371cb0ef41Sopenharmony_ci                                      struct uvwasi_poll_oneoff_state_t* state,
381cb0ef41Sopenharmony_ci                                      uvwasi_size_t max_fds
391cb0ef41Sopenharmony_ci                                    );
401cb0ef41Sopenharmony_ci
411cb0ef41Sopenharmony_ciuvwasi_errno_t uvwasi__poll_oneoff_state_cleanup(
421cb0ef41Sopenharmony_ci                                        struct uvwasi_poll_oneoff_state_t* state
431cb0ef41Sopenharmony_ci                                      );
441cb0ef41Sopenharmony_ci
451cb0ef41Sopenharmony_ciuvwasi_errno_t uvwasi__poll_oneoff_state_set_timer(
461cb0ef41Sopenharmony_ci                                      struct uvwasi_poll_oneoff_state_t* state,
471cb0ef41Sopenharmony_ci                                      uvwasi_timestamp_t timeout
481cb0ef41Sopenharmony_ci                                    );
491cb0ef41Sopenharmony_ci
501cb0ef41Sopenharmony_ciuvwasi_errno_t uvwasi__poll_oneoff_state_add_fdevent(
511cb0ef41Sopenharmony_ci                                      struct uvwasi_poll_oneoff_state_t* state,
521cb0ef41Sopenharmony_ci                                      uvwasi_subscription_t* subscription
531cb0ef41Sopenharmony_ci                                    );
541cb0ef41Sopenharmony_ci
551cb0ef41Sopenharmony_ciuvwasi_errno_t uvwasi__poll_oneoff_run(
561cb0ef41Sopenharmony_ci                                      struct uvwasi_poll_oneoff_state_t* state
571cb0ef41Sopenharmony_ci                                    );
581cb0ef41Sopenharmony_ci
591cb0ef41Sopenharmony_ci
601cb0ef41Sopenharmony_ci#endif /* __UVWASI_POLL_ONEOFF_H__ */
61