jam_pvm_common/
authorizer.rsuse jam_types::{AuthOutput, AuthParam, CoreIndex, WorkPackage};
#[macro_export]
macro_rules! declare_authorizer {
($t: ty) => {
#[polkavm_derive::polkavm_export]
extern "C" fn is_authorized_ext(ptr: u32, size: u32) -> u64 {
let (param, package, core_index): (AuthParam, WorkPackage, CoreIndex) =
decode_buf(ptr, size);
let result = <$t as $crate::Authorizer>::is_authorized(¶m, &package, core_index);
((&result).as_ptr() as u64) << 32 | (result.len() as u64)
}
};
}
pub trait Authorizer {
fn is_authorized(param: &AuthParam, package: &WorkPackage, core_index: CoreIndex)
-> AuthOutput;
}