Crates.io | wasmcloud-interface-sleepy |
lib.rs | wasmcloud-interface-sleepy |
version | 0.1.5 |
source | src |
created_at | 2023-03-30 22:03:21.141819 |
updated_at | 2023-04-15 13:00:21.085367 |
description | Interface for interacting with the sleepy capability provider. |
homepage | |
repository | https://github.com/jclmnop/wasmcloud-interface-sleepy |
max_upload_size | |
id | 825777 |
size | 10,209 |
Interface definitions for the "jclmnop:sleepy" capability contract. This contract allows actors to sleep for a specified duration, and also to retrieve the current system time on the wasmcloud host.
Useful for implementing rate limits or other time-based functionality.
use wasmcloud_interface_sleepy::SleepySender;
use wasmbus_rpc::actor::prelude::*;
use wasmbus_rpc::Timestamp;
async fn sleep_for_5_seconds(ctx: &Context) -> RpcResult<()> {
let sleepy = SleepySender::new();
sleepy.sleep(ctx, &5).await?;
}
async fn sleep_until_5_seconds(ctx: &Context) -> RpcResult<()> {
let sleepy = SleepySender::new();
let now = sleepy::now();
let five_seconds = Timestamp::new(now.sec + 5, now.nsec);
sleepy.sleep_until(ctx, &five_seconds).await?;
}
async fn get_current_time(ctx: &Context) -> RpcResult<Timestamp> {
let sleepy = SleepySender::new();
sleepy.now(ctx).await
}