use std::sync::Arc;
use uni_plugin::errors::FnError;
use uni_plugin_wasm_rt::IpcError;
use crate::pool::{PooledInstance, WasmInstancePool};
pub(crate) fn ipc_to_fn_err(e: IpcError) -> FnError {
FnError::new(FnError::CODE_TYPE_COERCION, format!("wasm IPC: {e}"))
}
pub(crate) fn acquire<I: Send + 'static>(
pool: &Arc<WasmInstancePool<I>>,
label: &str,
) -> Result<PooledInstance<I>, FnError> {
PooledInstance::acquire(Arc::clone(pool)).map_err(|e| {
FnError::new(
FnError::CODE_RESOURCE_LIMIT,
format!("acquire {label} instance: {e}"),
)
})
}