blob: 19da9366116ba8e98ac8c4a9252c485492edb3ea [file] [log] [blame]
// Copyright 2021 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.
use fuchsia_async as fasync;
#[fasync::run_singlethreaded]
async fn main() {
monotonic::monotonic_examples();
utc::utc_examples().await;
}
mod monotonic {
// [START monotonic]
use fuchsia_zircon as zx;
pub fn monotonic_examples() {
// Read monotonic time.
let monotonic_time = zx::Time::get_monotonic();
println!("The monotonic time is {:?}.", monotonic_time);
}
// [END monotonic]
}
mod utc {
// [START utc]
use fuchsia_async as fasync;
use fuchsia_runtime::duplicate_utc_clock_handle;
use fuchsia_zircon as zx;
pub async fn utc_examples() {
// Obtain a UTC handle.
let utc_clock = duplicate_utc_clock_handle(zx::Rights::SAME_RIGHTS)
.expect("Failed to duplicate UTC clock handle.");
// Wait for the UTC clock to start.
fasync::OnSignals::new(&utc_clock, zx::Signals::CLOCK_STARTED)
.await
.expect("Failed to wait for ZX_CLOCK_STARTED.");
println!("UTC clock is started.");
// Read the UTC clock.
let utc_time = utc_clock.read().expect("Failed to read UTC clock.");
println!("The UTC time is {:?}.", utc_time);
// Read UTC clock details.
let clock_details = utc_clock.get_details().expect("Failed to read UTC clock details.");
println!("The UTC clock's backstop time is {:?}.", clock_details.backstop);
}
// [END utc]
}