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