URI:
       tutil.rs - wasm-runtime - A wasm runtime
  HTML git clone https://git.parazyd.org/wasm-runtime
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tutil.rs (952B)
       ---
            1 use crate::{memory::MemoryManipulation, runtime::Env};
            2 
            3 /// Serialize payload to format accepted by the runtime entrypoint
            4 pub fn serialize_payload(payload: &[u8]) -> Vec<u8> {
            5     let mut out = vec![];
            6 
            7     let len = payload.len() as u64;
            8     out.extend_from_slice(&len.to_le_bytes());
            9     out.extend_from_slice(payload);
           10 
           11     out
           12 }
           13 
           14 /// Host function for logging strings. This is injected into the runtime.
           15 pub(crate) fn drk_log(env: &Env, ptr: u32, len: u32) {
           16     if let Some(bytes) = env.memory.get_ref().unwrap().read(ptr, len as usize) {
           17         // Piece the string together
           18         let msg = match String::from_utf8(bytes.to_vec()) {
           19             Ok(v) => v,
           20             Err(e) => {
           21                 println!("Invalid UTF-8 string: {:?}", e);
           22                 return
           23             }
           24         };
           25 
           26         let mut logs = env.logs.lock().unwrap();
           27         logs.push(msg);
           28         return
           29     }
           30 
           31     println!("Failed to read any bytes from VM memory");
           32 }