use std::ffi::c_void;
use crate::{
Userdata,
server::{DataSource, MethodCallback},
};
pub(crate) enum NodeContext {
DataSource(Box<dyn DataSource>),
MethodCallback(Box<dyn MethodCallback>),
}
impl NodeContext {
pub(crate) fn leak(self) -> *mut c_void {
Userdata::<Self>::prepare(self)
}
pub(crate) unsafe fn peek_at<'a>(data: *mut c_void) -> &'a mut Self {
unsafe { Userdata::<Self>::peek_at(data) }
}
#[expect(dead_code, reason = "unused for now")]
#[must_use]
pub(crate) unsafe fn consume(data: *mut c_void) -> Self {
unsafe { Userdata::<Self>::consume(data) }
}
}