use crate::ffi::libscamperctrl::{self, ScamperTaskT};
pub struct ScamperTask {
pub(crate) inner: *mut ScamperTaskT,
}
impl ScamperTask {
pub(crate) unsafe fn from_ptr(ptr: *mut ScamperTaskT) -> Self {
let ptr = unsafe { libscamperctrl::scamper_task_use(ptr) };
ScamperTask { inner: ptr }
}
pub fn halt(&self) {
unsafe { libscamperctrl::scamper_task_halt(self.inner) };
}
}
impl Drop for ScamperTask {
fn drop(&mut self) {
unsafe { libscamperctrl::scamper_task_free(self.inner) };
}
}
impl PartialEq for ScamperTask {
fn eq(&self, other: &Self) -> bool { self.inner == other.inner }
}
impl Eq for ScamperTask {}
impl std::hash::Hash for ScamperTask {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
(self.inner as usize).hash(state);
}
}
unsafe impl Send for ScamperTask {}
unsafe impl Sync for ScamperTask {}