hopper_runtime/
compute.rs1use crate::{ProgramError, ProgramResult};
11
12#[inline(always)]
16pub fn remaining_compute_units() -> u64 {
17 crate::syscalls::sol_remaining_compute_units()
18}
19
20#[inline(always)]
22pub fn require_compute_units(minimum: u64) -> Result<u64, ProgramError> {
23 let remaining = remaining_compute_units();
24 if remaining < minimum {
25 return Err(ProgramError::InvalidArgument);
26 }
27 Ok(remaining)
28}
29
30#[inline(always)]
32pub fn check_compute_units(minimum: u64) -> ProgramResult {
33 require_compute_units(minimum).map(|_| ())
34}
35
36#[cfg(test)]
37mod tests {
38 use super::*;
39
40 #[test]
41 fn offchain_compute_is_unlimited() {
42 assert_eq!(remaining_compute_units(), u64::MAX);
43 assert_eq!(require_compute_units(10).unwrap(), u64::MAX);
44 assert!(check_compute_units(u64::MAX).is_ok());
45 }
46}