extern crate serde;
extern crate serde_derive;
extern crate serde_json;
extern crate thiserror;
extern crate wapc_guest as guest;
use crate::BitcodeContext;
use guest::CallResult;
use serde_json::{json, Value};
use std::str;
#[macro_export]
macro_rules! implement_ext_func {
(
$(#[$meta:meta])*
$handler_name:ident,
$fabric_name:literal,
$module_name:literal
) => {
$(#[$meta])*
pub fn $handler_name(&'a self, v:Option<serde_json::Value>) -> CallResult {
let v_call = match v{
Some(v) => v,
None => Value::default(),
};
let method = $fabric_name;
let impl_result = self.call_function(method, v_call, $module_name)?;
let id = self.request.id.clone();
self.make_success_bytes(&impl_result, &id)
}
}
}
impl<'a> BitcodeContext {
implement_ext_func!(
proxy_http,
"ProxyHttp",
"ext"
);
pub fn start_bitcode_lro(&'a self, function: &str, args: &serde_json::Value) -> CallResult {
let params = json!({ "function": function, "args" : args});
self.call_function("StartBitcodeLRO", params, "lro")
}
}