use std::marker::PhantomData;
use zenrc_dds::dds_entity_t;
pub struct Topic<T> {
pub(crate) entity: dds_entity_t,
_marker: PhantomData<T>,
}
impl<T> Topic<T> {
pub(crate) fn from_entity(entity: dds_entity_t) -> Self {
Self {
entity,
_marker: PhantomData,
}
}
pub fn entity(&self) -> dds_entity_t {
self.entity
}
}
impl<T> Drop for Topic<T> {
fn drop(&mut self) {
unsafe { zenrc_dds::dds_delete(self.entity) };
}
}
unsafe impl<T> Send for Topic<T> {}
unsafe impl<T> Sync for Topic<T> {}