| // Copyright 2017 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <lib/async-loop/cpp/loop.h> |
| |
| #include <zircon/assert.h> |
| |
| namespace async { |
| |
| Loop::Loop(const async_loop_config_t* config) { |
| zx_status_t status = async_loop_create(config, &loop_); |
| ZX_ASSERT_MSG(status == ZX_OK, "status=%d", status); |
| } |
| |
| Loop::~Loop() { async_loop_destroy(loop_); } |
| |
| void Loop::Shutdown() { async_loop_shutdown(loop_); } |
| |
| zx_status_t Loop::Run(zx::time deadline, bool once) { |
| return async_loop_run(loop_, deadline.get(), once); |
| } |
| |
| zx_status_t Loop::RunUntilIdle() { return async_loop_run_until_idle(loop_); } |
| |
| void Loop::Quit() { async_loop_quit(loop_); } |
| |
| zx_status_t Loop::ResetQuit() { return async_loop_reset_quit(loop_); } |
| |
| async_loop_state_t Loop::GetState() const { return async_loop_get_state(loop_); } |
| |
| zx_status_t Loop::StartThread(const char* name, thrd_t* out_thread) { |
| return async_loop_start_thread(loop_, name, out_thread); |
| } |
| |
| void Loop::JoinThreads() { async_loop_join_threads(loop_); } |
| |
| } // namespace async |