rustdds 0.3.0

Rust DDS implementation with RTPS
Documentation
use crate::{
  dds::qos::{
    QosPolicies, policy::Deadline, policy::DestinationOrder, policy::Durability, policy::History,
    policy::LatencyBudget, policy::Lifespan, policy::Liveliness, policy::Ownership,
    policy::Reliability,
  },
  structure::duration::Duration,
};

pub struct ROSDiscoveryTopic {}

impl ROSDiscoveryTopic {
  const QOS: QosPolicies = QosPolicies {
    durability: Some(Durability::TransientLocal),
    presentation: None,
    deadline: Some(Deadline(Duration::DURATION_INFINITE)),
    latency_budget: Some(LatencyBudget {
      duration: Duration::DURATION_ZERO,
    }),
    ownership: Some(Ownership::Shared),
    liveliness: Some(Liveliness::Automatic {
      lease_duration: Duration::DURATION_INFINITE,
    }),
    time_based_filter: None,
    reliability: Some(Reliability::Reliable {
      max_blocking_time: Duration::DURATION_ZERO,
    }),
    destination_order: Some(DestinationOrder::ByReceptionTimestamp),
    history: Some(History::KeepLast { depth: 1 }),
    resource_limits: None,
    lifespan: Some(Lifespan {
      duration: Duration::DURATION_INFINITE,
    }),
  };

  const TOPIC_NAME: &'static str = "ros_discovery_info";
  const TYPE_NAME: &'static str = "rmw_dds_common::msg::dds_::ParticipantEntitiesInfo_";

  pub fn topic_name() -> &'static str {
    ROSDiscoveryTopic::TOPIC_NAME
  }

  pub fn type_name() -> &'static str {
    ROSDiscoveryTopic::TYPE_NAME
  }

  pub const fn get_qos() -> QosPolicies {
    ROSDiscoveryTopic::QOS
  }
}

pub struct ParameterEventsTopic {}

impl ParameterEventsTopic {
  const QOS: QosPolicies = QosPolicies {
    durability: Some(Durability::TransientLocal),
    presentation: None,
    deadline: None,
    latency_budget: None,
    ownership: None,
    liveliness: None,
    time_based_filter: None,
    reliability: Some(Reliability::Reliable {
      max_blocking_time: Duration::DURATION_ZERO,
    }),
    destination_order: None,
    history: Some(History::KeepLast { depth: 1 }),
    resource_limits: None,
    lifespan: None,
  };

  const TOPIC_NAME: &'static str = "rt/parameter_events";
  const TYPE_NAME: &'static str = "rcl_interfaces::msg::dds_::ParameterEvent_";

  pub fn topic_name() -> &'static str {
    ParameterEventsTopic::TOPIC_NAME
  }

  pub fn type_name() -> &'static str {
    ParameterEventsTopic::TYPE_NAME
  }

  pub fn get_qos() -> QosPolicies {
    ParameterEventsTopic::QOS
  }
}

pub struct RosOutTopic {}

impl RosOutTopic {
  const QOS: QosPolicies = QosPolicies {
    durability: Some(Durability::TransientLocal),
    presentation: None,
    deadline: Some(Deadline(Duration::DURATION_INFINITE)),
    latency_budget: Some(LatencyBudget {
      duration: Duration::DURATION_ZERO,
    }),
    ownership: Some(Ownership::Shared),
    liveliness: Some(Liveliness::Automatic {
      lease_duration: Duration::DURATION_INFINITE,
    }),
    time_based_filter: None,
    reliability: Some(Reliability::Reliable {
      max_blocking_time: Duration::DURATION_ZERO,
    }),
    destination_order: Some(DestinationOrder::ByReceptionTimestamp),
    history: Some(History::KeepLast { depth: 1 }),
    resource_limits: None,
    lifespan: Some(Lifespan {
      duration: Duration::from_secs(10),
    }),
  };

  const TOPIC_NAME: &'static str = "rt/rosout";
  const TYPE_NAME: &'static str = "rcl_interfaces::msg::dds_::Log_";

  pub fn topic_name() -> &'static str {
    RosOutTopic::TOPIC_NAME
  }

  pub fn type_name() -> &'static str {
    RosOutTopic::TYPE_NAME
  }

  pub fn get_qos() -> QosPolicies {
    RosOutTopic::QOS
  }
}