use zerodds_dcps::{DomainParticipantFactory, DomainParticipantQos, Result};
use crate::AsyncDomainParticipant;
pub struct AsyncDomainParticipantFactory {
inner: &'static DomainParticipantFactory,
}
impl AsyncDomainParticipantFactory {
#[must_use]
pub fn instance() -> Self {
Self {
inner: DomainParticipantFactory::instance(),
}
}
#[must_use]
pub fn create_participant_offline(&self, domain_id: i32) -> AsyncDomainParticipant {
let p = self
.inner
.create_participant_offline(domain_id, DomainParticipantQos::default());
AsyncDomainParticipant::from_sync(p)
}
pub fn create_participant(&self, domain_id: i32) -> Result<AsyncDomainParticipant> {
let p = self
.inner
.create_participant(domain_id, DomainParticipantQos::default())?;
Ok(AsyncDomainParticipant::from_sync(p))
}
pub fn create_participant_with_qos(
&self,
domain_id: i32,
qos: DomainParticipantQos,
) -> Result<AsyncDomainParticipant> {
let p = self.inner.create_participant(domain_id, qos)?;
Ok(AsyncDomainParticipant::from_sync(p))
}
}
impl Default for AsyncDomainParticipantFactory {
fn default() -> Self {
Self::instance()
}
}