use std::ptr;
use crate::TryIntoJs;
use crate::sys::napi_value;
use crate::val::JsEnv;
use crate::NjError;
pub struct SafeArrayBuffer {
data: Vec<u8>,
}
use std::fmt;
use std::fmt::Debug;
impl Debug for SafeArrayBuffer {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_fmt(format_args!("SafeArrayBuffer len: {}", self.data.len()))
}
}
impl SafeArrayBuffer {
pub fn new(data: Vec<u8>) -> Self {
Self { data }
}
}
impl TryIntoJs for SafeArrayBuffer {
fn try_to_js(self, js_env: &JsEnv) -> Result<napi_value, NjError> {
let len = self.data.len();
let mut napi_buffer = ptr::null_mut();
crate::napi_call_result!(crate::sys::napi_create_buffer_copy(
js_env.inner(),
len,
self.data.as_ptr() as *const std::ffi::c_void,
std::ptr::null_mut(),
&mut napi_buffer,
))?;
Ok(napi_buffer)
}
}