use crate::golem_agentic::golem::agent::common::DataValue;
use crate::golem_agentic::golem::agent::host::{FutureInvokeResult, RpcError};
use wasip2::io::poll::Pollable;
pub async fn await_invoke_result(invoke_result: FutureInvokeResult) -> Result<DataValue, RpcError> {
loop {
let pollable = invoke_result.subscribe();
await_pollable(pollable).await;
if let Some(result) = invoke_result.get() {
return result;
}
}
}
pub async fn await_pollable(pollable: Pollable) {
wstd::runtime::AsyncPollable::new(pollable).wait_for().await;
}