OpenDDS  Snapshot(2023/04/28-20:55)
Public Member Functions | Public Attributes | List of all members
OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver Struct Reference
Collaboration diagram for OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver:
Collaboration graph
[legend]

Public Member Functions

 MessageReceiver (const GuidPrefix_t &local)
 
void reset (const ACE_INET_Addr &remote_address, const RTPS::Header &hdr)
 
void submsg (const RTPS::Submessage &s)
 
void submsg (const RTPS::InfoDestinationSubmessage &id)
 
void submsg (const RTPS::InfoReplySubmessage &ir)
 
void submsg (const RTPS::InfoReplyIp4Submessage &iri4)
 
void submsg (const RTPS::InfoTimestampSubmessage &it)
 
void submsg (const RTPS::InfoSourceSubmessage &is)
 
void fill_header (DataSampleHeader &header) const
 

Public Attributes

GuidPrefix_t local_
 
RTPS::ProtocolVersion_t source_version_
 
RTPS::VendorId_t source_vendor_
 
GuidPrefix_t source_guid_prefix_
 
GuidPrefix_t dest_guid_prefix_
 
bool directed_
 
DCPS::LocatorSeq unicast_reply_locator_list_
 
DCPS::LocatorSeq multicast_reply_locator_list_
 
bool have_timestamp_
 
RTPS::Time_t timestamp_
 

Detailed Description

Definition at line 145 of file RtpsUdpReceiveStrategy.h.

Constructor & Destructor Documentation

◆ MessageReceiver()

OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::MessageReceiver ( const GuidPrefix_t local)
explicit

Definition at line 1247 of file RtpsUdpReceiveStrategy.cpp.

References OpenDDS::DCPS::assign(), dest_guid_prefix_, OpenDDS::RTPS::Time_t::fraction, local_, OpenDDS::RTPS::ProtocolVersion_t::major, OpenDDS::RTPS::ProtocolVersion_t::minor, OpenDDS::RTPS::Time_t::seconds, source_guid_prefix_, source_vendor_, source_version_, timestamp_, and OpenDDS::RTPS::VendorId_t::vendorId.

1248  : directed_(false)
1249  , have_timestamp_(false)
1250 {
1251  assign(local_, local);
1254  for (size_t i = 0; i < sizeof(GuidPrefix_t); ++i) {
1255  source_guid_prefix_[i] = 0;
1256  dest_guid_prefix_[i] = 0;
1257  }
1258  timestamp_.seconds = 0;
1259  timestamp_.fraction = 0;
1260 }
unsigned long fraction
Definition: RtpsCore.idl:93
octet GuidPrefix_t[12]
Definition: DdsDcpsGuid.idl:19
void assign(EntityId_t &dest, const EntityId_t &src)
Definition: GuidUtils.h:157
unsigned long seconds
Definition: RtpsCore.idl:92

Member Function Documentation

◆ fill_header()

void OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::fill_header ( DataSampleHeader header) const

Definition at line 1403 of file RtpsUdpReceiveStrategy.cpp.

References OpenDDS::DCPS::assign(), OpenDDS::RTPS::Time_t::fraction, OpenDDS::DCPS::GUID_t::guidPrefix, have_timestamp_, OPENDDS_END_VERSIONED_NAMESPACE_DECL, OpenDDS::DCPS::DataSampleHeader::publication_id_, OpenDDS::RTPS::Time_t::seconds, source_guid_prefix_, OpenDDS::DCPS::DataSampleHeader::source_timestamp_nanosec_, OpenDDS::DCPS::DataSampleHeader::source_timestamp_sec_, timestamp_, and OpenDDS::DCPS::uint32_fractional_seconds_to_nanoseconds().

Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::deliver_sample_i(), and OpenDDS::DCPS::RtpsUdpReceiveStrategy::reassemble_i().

1405 {
1406  using namespace RTPS;
1407  if (have_timestamp_) {
1408  header.source_timestamp_sec_ = timestamp_.seconds;
1409  header.source_timestamp_nanosec_ =
1411  }
1412  assign(header.publication_id_.guidPrefix, source_guid_prefix_);
1413 }
ACE_INLINE OpenDDS_Dcps_Export ACE_UINT32 uint32_fractional_seconds_to_nanoseconds(ACE_UINT32 fraction)
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
Definition: CHANGELOG.txt:8
unsigned long fraction
Definition: RtpsCore.idl:93
void assign(EntityId_t &dest, const EntityId_t &src)
Definition: GuidUtils.h:157
unsigned long seconds
Definition: RtpsCore.idl:92

◆ reset()

void OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::reset ( const ACE_INET_Addr remote_address,
const RTPS::Header hdr 
)

Definition at line 1263 of file RtpsUdpReceiveStrategy.cpp.

References OpenDDS::DCPS::address_to_locator(), OpenDDS::DCPS::assign(), dest_guid_prefix_, directed_, OpenDDS::RTPS::Header::guidPrefix, have_timestamp_, local_, OpenDDS::DCPS::LOCATOR_PORT_INVALID, multicast_reply_locator_list_, source_guid_prefix_, source_vendor_, source_version_, OpenDDS::RTPS::TIME_INVALID, timestamp_, unicast_reply_locator_list_, OpenDDS::RTPS::Header::vendorId, and OpenDDS::RTPS::Header::version.

Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::check_header().

1265 {
1266  using namespace RTPS;
1267  // see RTPS spec v2.1 section 8.3.4 table 8.16 and section 8.3.6.4
1268  source_version_ = hdr.version;
1269  source_vendor_ = hdr.vendorId;
1270 
1271  assign(source_guid_prefix_, hdr.guidPrefix);
1273  directed_ = false;
1274 
1275  unicast_reply_locator_list_.length(1);
1278 
1282 
1283  have_timestamp_ = false;
1285 }
const Time_t TIME_INVALID
Definition: MessageTypes.h:20
OpenDDS_Dcps_Export void address_to_locator(Locator_t &locator, const ACE_INET_Addr &addr)
const unsigned long LOCATOR_PORT_INVALID
void assign(EntityId_t &dest, const EntityId_t &src)
Definition: GuidUtils.h:157

◆ submsg() [1/6]

void OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::submsg ( const RTPS::Submessage s)

Definition at line 1288 of file RtpsUdpReceiveStrategy.cpp.

References OpenDDS::RTPS::INFO_DST, OpenDDS::RTPS::Submessage::info_dst_sm, OpenDDS::RTPS::INFO_REPLY, OpenDDS::RTPS::INFO_REPLY_IP4, OpenDDS::RTPS::Submessage::info_reply_ipv4_sm, OpenDDS::RTPS::Submessage::info_reply_sm, OpenDDS::RTPS::INFO_SRC, OpenDDS::RTPS::Submessage::info_src_sm, OpenDDS::RTPS::INFO_TS, and OpenDDS::RTPS::Submessage::info_ts_sm.

Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::check_header().

1289 {
1290  using namespace RTPS;
1291 
1292  switch (s._d()) {
1293  case INFO_TS:
1294  submsg(s.info_ts_sm());
1295  break;
1296 
1297  case INFO_SRC:
1298  submsg(s.info_src_sm());
1299  break;
1300 
1301  case INFO_REPLY_IP4:
1302  submsg(s.info_reply_ipv4_sm());
1303  break;
1304 
1305  case INFO_DST:
1306  submsg(s.info_dst_sm());
1307  break;
1308 
1309  case INFO_REPLY:
1310  submsg(s.info_reply_sm());
1311  break;
1312 
1313  default:
1314  break;
1315  }
1316 }

◆ submsg() [2/6]

void OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::submsg ( const RTPS::InfoDestinationSubmessage id)

Definition at line 1319 of file RtpsUdpReceiveStrategy.cpp.

References OpenDDS::DCPS::assign(), dest_guid_prefix_, directed_, and local_.

1321 {
1322  // see RTPS spec v2.1 section 8.3.7.7.4
1323  for (size_t i = 0; i < sizeof(GuidPrefix_t); ++i) {
1324  if (id.guidPrefix[i]) { // if some byte is > 0, it's not UNKNOWN
1325  assign(dest_guid_prefix_, id.guidPrefix);
1326  directed_ = true;
1327  return;
1328  }
1329  }
1331  directed_ = false;
1332 }
octet GuidPrefix_t[12]
Definition: DdsDcpsGuid.idl:19
void assign(EntityId_t &dest, const EntityId_t &src)
Definition: GuidUtils.h:157

◆ submsg() [3/6]

void OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::submsg ( const RTPS::InfoReplySubmessage ir)

Definition at line 1335 of file RtpsUdpReceiveStrategy.cpp.

References OpenDDS::RTPS::SubmessageHeader::flags, multicast_reply_locator_list_, OpenDDS::RTPS::InfoReplySubmessage::multicastLocatorList, OpenDDS::RTPS::InfoReplySubmessage::smHeader, unicast_reply_locator_list_, and OpenDDS::RTPS::InfoReplySubmessage::unicastLocatorList.

1336 {
1337  // see RTPS spec v2.1 section 8.3.7.8.4
1338  unicast_reply_locator_list_.length(ir.unicastLocatorList.length());
1339  for (CORBA::ULong i = 0; i < ir.unicastLocatorList.length(); ++i) {
1340  unicast_reply_locator_list_[i] = ir.unicastLocatorList[i];
1341  }
1342 
1343  if (ir.smHeader.flags & 2 /* MulticastFlag */) {
1344  multicast_reply_locator_list_.length(ir.multicastLocatorList.length());
1345  for (CORBA::ULong i = 0; i < ir.multicastLocatorList.length(); ++i) {
1346  multicast_reply_locator_list_[i] = ir.multicastLocatorList[i];
1347  }
1348 
1349  } else {
1351  }
1352 }
ACE_CDR::ULong ULong

◆ submsg() [4/6]

void OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::submsg ( const RTPS::InfoReplyIp4Submessage iri4)

Definition at line 1355 of file RtpsUdpReceiveStrategy.cpp.

References OpenDDS::RTPS::LocatorUDPv4_t::address, OpenDDS::DCPS::assign(), OpenDDS::RTPS::SubmessageHeader::flags, OpenDDS::RTPS::LOCATOR_KIND_UDPv4, multicast_reply_locator_list_, OpenDDS::RTPS::InfoReplyIp4Submessage::multicastLocator, OpenDDS::RTPS::InfoReplyIp4Submessage::smHeader, unicast_reply_locator_list_, and OpenDDS::RTPS::InfoReplyIp4Submessage::unicastLocator.

1357 {
1358  // see RTPS spec v2.1 sections 8.3.7.8.4 and 9.4.5.14
1359  unicast_reply_locator_list_.length(1);
1361  unicast_reply_locator_list_[0].port = iri4.unicastLocator.port;
1362  RTPS::assign(unicast_reply_locator_list_[0].address, iri4.unicastLocator.address);
1363 
1364  if (iri4.smHeader.flags & 2 /* MulticastFlag */) {
1367  multicast_reply_locator_list_[0].port = iri4.multicastLocator.port;
1368  RTPS::assign(multicast_reply_locator_list_[0].address, iri4.multicastLocator.address);
1369  } else {
1371  }
1372 }
const long LOCATOR_KIND_UDPv4
Definition: RtpsCore.idl:111
void assign(EntityId_t &dest, const EntityId_t &src)
Definition: GuidUtils.h:157

◆ submsg() [5/6]

void OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::submsg ( const RTPS::InfoTimestampSubmessage it)

Definition at line 1375 of file RtpsUdpReceiveStrategy.cpp.

References OpenDDS::RTPS::SubmessageHeader::flags, have_timestamp_, OpenDDS::RTPS::InfoTimestampSubmessage::smHeader, OpenDDS::RTPS::InfoTimestampSubmessage::timestamp, and timestamp_.

1377 {
1378  // see RTPS spec v2.1 section 8.3.7.9.10
1379  if (!(it.smHeader.flags & 2 /* InvalidateFlag */)) {
1380  have_timestamp_ = true;
1381  timestamp_ = it.timestamp;
1382  } else {
1383  have_timestamp_ = false;
1384  }
1385 }

◆ submsg() [6/6]

void OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::submsg ( const RTPS::InfoSourceSubmessage is)

Definition at line 1388 of file RtpsUdpReceiveStrategy.cpp.

References OpenDDS::DCPS::assign(), OpenDDS::RTPS::InfoSourceSubmessage::guidPrefix, have_timestamp_, OpenDDS::RTPS::LOCATOR_INVALID, multicast_reply_locator_list_, source_guid_prefix_, source_vendor_, source_version_, unicast_reply_locator_list_, OpenDDS::RTPS::InfoSourceSubmessage::vendorId, and OpenDDS::RTPS::InfoSourceSubmessage::version.

1390 {
1391  // see RTPS spec v2.1 section 8.3.7.9.4
1392  assign(source_guid_prefix_, is.guidPrefix);
1393  source_version_ = is.version;
1394  source_vendor_ = is.vendorId;
1395  unicast_reply_locator_list_.length(1);
1399  have_timestamp_ = false;
1400 }
const OpenDDS::DCPS::Locator_t LOCATOR_INVALID
Definition: MessageTypes.h:52
void assign(EntityId_t &dest, const EntityId_t &src)
Definition: GuidUtils.h:157

Member Data Documentation

◆ dest_guid_prefix_

GuidPrefix_t OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::dest_guid_prefix_

◆ directed_

bool OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::directed_

◆ have_timestamp_

bool OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::have_timestamp_

Definition at line 168 of file RtpsUdpReceiveStrategy.h.

Referenced by fill_header(), reset(), and submsg().

◆ local_

GuidPrefix_t OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::local_

◆ multicast_reply_locator_list_

DCPS::LocatorSeq OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::multicast_reply_locator_list_

Definition at line 167 of file RtpsUdpReceiveStrategy.h.

Referenced by reset(), and submsg().

◆ source_guid_prefix_

GuidPrefix_t OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::source_guid_prefix_

◆ source_vendor_

RTPS::VendorId_t OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::source_vendor_

Definition at line 162 of file RtpsUdpReceiveStrategy.h.

Referenced by MessageReceiver(), reset(), and submsg().

◆ source_version_

RTPS::ProtocolVersion_t OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::source_version_

◆ timestamp_

RTPS::Time_t OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::timestamp_

Definition at line 169 of file RtpsUdpReceiveStrategy.h.

Referenced by fill_header(), MessageReceiver(), reset(), and submsg().

◆ unicast_reply_locator_list_

DCPS::LocatorSeq OpenDDS::DCPS::RtpsUdpReceiveStrategy::MessageReceiver::unicast_reply_locator_list_

Definition at line 166 of file RtpsUdpReceiveStrategy.h.

Referenced by reset(), and submsg().


The documentation for this struct was generated from the following files: