14 #include "dds/DdsDcpsCoreC.h" 20 #ifndef OPENDDS_SAFETY_PROFILE 21 using OpenDDS::DCPS::operator==;
29 return message_instance_guid == rhs.message_instance_guid
30 && platform_view_guid == rhs.platform_view_guid
31 && message_source_guid == rhs.message_source_guid
32 && message_timestamp == rhs.message_timestamp
33 && message_validity == rhs.message_validity;
45 const DDS::DomainParticipantFactory_var& dpf,
46 DDS::DomainParticipant_var& dp);
48 const DDS::DomainParticipant_var& dp,
49 DDS::Publisher_var& pub);
51 const DDS::DomainParticipant_var& dp,
52 DDS::Subscriber_var& sub);
54 bool cleanup_opendds_publisher(
const DDS::Publisher_var pub);
55 bool cleanup_opendds_subscriber(
const DDS::Subscriber_var sub);
56 void cleanup_opendds_participant(
const DDS::DomainParticipant_var dp);
58 RETURN_CODE_TYPE create_opendds_entities(CONNECTION_ID_TYPE connectionId,
63 CONNECTION_DIRECTION_TYPE dir,
65 const char* transport);
70 void Initialize(
const CONFIGURATION_RESOURCE configuration_file,
71 RETURN_CODE_TYPE& return_code)
74 int status = parser.parse(configuration_file);
77 ACE_TEXT(
"(%P|%t) ERROR: Initialize() ")
78 ACE_TEXT(
"Parser::parse () returned %d\n"),
80 return_code = INVALID_PARAM;
82 return_code = RC_NO_ERROR;
83 #if OPENDDS_POOL_ALLOCATOR 87 }
catch (
const CORBA::BAD_PARAM& ) {
91 return_code = INVALID_PARAM;
96 MESSAGING_PATTERN_TYPE pattern,
97 CONNECTION_ID_TYPE& connection_id,
98 CONNECTION_DIRECTION_TYPE& connection_direction,
99 MESSAGE_SIZE_TYPE& max_message_size,
101 RETURN_CODE_TYPE& return_code)
104 return_code = RC_NO_ERROR;
106 if (pattern != PUB_SUB) {
107 return_code = INVALID_CONFIG;
116 if (!parser.find_connection(connection_name, connection)) {
118 if (!parser.find_topic(connection.
topic_name_, topic)) {
120 if (parser.find_qos(connection, qos)) {
121 return_code = INVALID_CONFIG;
124 return_code = INVALID_CONFIG;
127 return_code = INVALID_CONFIG;
130 if (return_code != RC_NO_ERROR) {
138 return_code = create_opendds_entities(connection_id,
143 connection_direction,
146 if (return_code != RC_NO_ERROR) {
150 const SYSTEM_TIME_TYPE refresh_period =
151 (connection_direction == SOURCE) ?
154 const TRANSPORT_CONNECTION_STATUS_TYPE status = {
158 connection_direction,
167 }
catch (
const CORBA::BAD_PARAM&) {
171 return_code = INVALID_PARAM;
176 CONNECTION_ID_TYPE& connection_id ,
177 TRANSPORT_CONNECTION_STATUS_TYPE& status,
178 RETURN_CODE_TYPE& return_code)
187 if (connection_id != 0 && entities.connections_.count(connection_id)) {
190 if (connection_name[0]) {
192 OPENDDS_STRING conn_name = entities.connections_[connection_id].connection_name;
193 if (std::strcmp(connection_name, conn_name.c_str()) == 0) {
194 return_code = RC_NO_ERROR;
196 return_code = INVALID_PARAM;
202 entities.connections_[connection_id].connection_name.copy(connection_name,
203 sizeof(CONNECTION_NAME_TYPE));
204 connection_name[
sizeof(CONNECTION_NAME_TYPE) - 1] = 0;
205 return_code = RC_NO_ERROR;
208 }
else if (connection_name[0] && connection_id == 0) {
212 if (0 == parser.find_connection(connection_name, settings)) {
214 return_code = RC_NO_ERROR;
217 return_code = INVALID_PARAM;
222 return_code = INVALID_PARAM;
224 if (return_code == RC_NO_ERROR) {
225 TRANSPORT_CONNECTION_STATUS_TYPE& cur_status = entities.connections_[connection_id].connection_status;
226 if (cur_status.CONNECTION_DIRECTION == FACE::DESTINATION) {
230 ACE_DEBUG((
LM_DEBUG,
"Get_Connection_Parameters: returning NOT_AVAILABLE due to receiver's status not valid\n"));
232 return_code = NOT_AVAILABLE;
237 cur_status.LAST_MSG_VALIDITY = receiver.
last_msg_header.message_validity;
239 cur_status.REFRESH_PERIOD = 0;
241 WAITING_RANGE_TYPE num_waiting;
243 cur_status.WAITING_PROCESSES_OR_MESSAGES = num_waiting;
246 ACE_DEBUG((
LM_DEBUG,
"Get_Connection_Parameters: returning NOT_AVAILABLE due to messages_waiting\n"));
248 return_code = NOT_AVAILABLE;
256 return_code = NOT_AVAILABLE;
259 cur_status.REFRESH_PERIOD = 0;
260 cur_status.WAITING_PROCESSES_OR_MESSAGES = 0;
264 }
catch (
const CORBA::BAD_PARAM&) {
266 ACE_ERROR((
LM_ERROR,
"(%P|%t) ERROR: Get_Connection_Parameters - INVALID_PARAM\n"));
268 return_code = INVALID_PARAM;
273 RETURN_CODE_TYPE& return_code)
277 Entities::ConnIdToReceiverMap& readers = entities.
receivers_;
278 if (readers.count(connection_id)) {
279 readers[connection_id]->dr->set_listener(NULL, 0);
280 return_code = RC_NO_ERROR;
283 }
catch (
const CORBA::BAD_PARAM&) {
289 return_code = INVALID_PARAM;
293 RETURN_CODE_TYPE& return_code)
297 Entities::ConnIdToSenderMap& writers = entities.
senders_;
298 Entities::ConnIdToReceiverMap& readers = entities.
receivers_;
300 DDS::DomainParticipant_var dp;
301 bool try_cleanup_participant =
false;
302 if (writers.count(connection_id)) {
303 const DDS::DataWriter_var datawriter = writers[connection_id].dw;
304 const DDS::Publisher_var pub = datawriter->get_publisher();
305 writers.erase(connection_id);
306 pub->delete_datawriter(datawriter);
307 dp = pub->get_participant();
308 try_cleanup_participant = cleanup_opendds_publisher(pub);
310 }
else if (readers.count(connection_id)) {
311 const DDS::DataReader_var datareader = readers[connection_id]->dr;
312 const DDS::Subscriber_var sub = datareader->get_subscriber();
313 delete readers[connection_id];
314 readers.erase(connection_id);
315 datareader->delete_contained_entities();
316 sub->delete_datareader(datareader);
317 dp = sub->get_participant();
318 try_cleanup_participant = cleanup_opendds_subscriber(sub);
322 return_code = INVALID_PARAM;
326 if (try_cleanup_participant) {
327 cleanup_opendds_participant(dp);
330 entities.connections_.erase(connection_id);
331 return_code = RC_NO_ERROR;
332 }
catch (
const CORBA::BAD_PARAM&) {
336 return_code = INVALID_PARAM;
343 FACE::TRANSACTION_ID_TYPE& transaction_id,
344 FACE::TS::MessageHeader& message_header,
345 FACE::MESSAGE_SIZE_TYPE message_size,
346 FACE::RETURN_CODE_TYPE& return_code)
349 Entities::ConnIdToReceiverMap& readers =
354 if (!readers.count(connection_id) || transaction_id == 0) {
357 "could not find reader for connection_id: %d OR transaction id[%d] == 0\n",
361 return_code = FACE::INVALID_PARAM;
365 if (message_size < 0 || (
unsigned)message_size <
sizeof(FACE::TS::MessageHeader)) {
367 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) receive_header - INVALID_PARAM - message_size: %d is < %d\n",
369 sizeof(FACE::TS::MessageHeader)));
371 return_code = FACE::INVALID_PARAM;
374 if (transaction_id == readers[connection_id]->last_msg_tid) {
375 message_header = readers[connection_id]->last_msg_header;
380 }
catch (
const CORBA::BAD_PARAM&) {
384 return_code = INVALID_PARAM;
389 CONNECTION_ID_TYPE connection_id,
390 TIMEOUT_TYPE timeout,
391 TRANSACTION_ID_TYPE& transaction_id,
392 MessageHeader& message_header,
393 MESSAGE_SIZE_TYPE message_size,
394 RETURN_CODE_TYPE& return_code)
398 transaction_id, message_header,
399 message_size, return_code);
400 }
catch (
const CORBA::BAD_PARAM&) {
404 return_code = INVALID_PARAM;
411 const DDS::DomainParticipantFactory_var& dpf,
412 DDS::DomainParticipant_var& dp) {
413 DDS::DomainParticipant_var temp_dp;
415 temp_dp = dpf->lookup_participant(domainId);
418 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) find_or_create_dp - created new participant for domainId: %d\n", domainId));
421 dpf->get_default_participant_qos(qos);
429 dp = dpf->create_participant(domainId, qos, 0, 0);
433 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) find_or_create_dp - found existing participant for domainId: %d\n", domainId));
439 const DDS::DomainParticipant_var& dp,
440 DDS::Publisher_var& pub) {
441 DDS::DomainParticipant_var temp_dp;
442 DDS::Publisher_var temp_pub;
445 Entities::ConnIdToSenderMap::iterator wtrIter = writers.begin();
447 while (wtrIter != writers.end()) {
448 temp_pub = wtrIter->second.dw->get_publisher();
449 temp_dp = temp_pub->get_participant();
451 temp_pub->get_qos(temp_qos);
452 if (dp->get_domain_id() == temp_dp->get_domain_id() &&
455 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) find_or_create_pub - found existing publisher in senders\n"));
466 pub = dp->create_publisher(qos, 0, 0);
470 const DDS::DomainParticipant_var& dp,
471 DDS::Subscriber_var& sub)
473 DDS::DomainParticipant_var temp_dp;
474 DDS::Subscriber_var temp_sub;
477 Entities::ConnIdToReceiverMap::iterator rdrIter = readers.begin();
479 while (rdrIter != readers.end()) {
480 temp_sub = rdrIter->second->dr->get_subscriber();
481 temp_dp = temp_sub->get_participant();
483 temp_sub->get_qos(temp_qos);
484 if (dp->get_domain_id() == temp_dp->get_domain_id() &&
487 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) find_or_create_sub - found existing subscriber in receivers\n"));
498 sub = dp->create_subscriber(qos, 0, 0);
501 bool cleanup_opendds_publisher(
const DDS::Publisher_var pub)
503 DDS::Publisher_var temp_pub;
505 pub->get_qos(pub_qos);
506 DDS::DomainParticipant_var dp = pub->get_participant();
507 DDS::DomainParticipant_var temp_dp;
511 Entities::ConnIdToSenderMap::iterator wtrIter = writers.begin();
512 while (wtrIter != writers.end()) {
513 temp_pub = wtrIter->second.dw->get_publisher();
514 temp_dp = temp_pub->get_participant();
515 if (dp->get_domain_id() == temp_dp->get_domain_id()) {
516 temp_pub->get_qos(temp_qos);
517 if (pub_qos == temp_qos) {
519 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) cleanup_opendds_publisher - publisher still in use by other writer\n"));
527 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) cleanup_opendds_publisher - publisher no longer in use, delete pub\n"));
529 dp->delete_publisher(pub);
533 bool cleanup_opendds_subscriber(
const DDS::Subscriber_var sub)
535 DDS::Subscriber_var temp_sub;
537 sub->get_qos(sub_qos);
538 DDS::DomainParticipant_var dp = sub->get_participant();
539 DDS::DomainParticipant_var temp_dp;
544 Entities::ConnIdToReceiverMap::iterator rdrIter = readers.begin();
545 while (rdrIter != readers.end()) {
546 temp_sub = rdrIter->second->dr->get_subscriber();
547 temp_dp = temp_sub->get_participant();
549 if (dp->get_domain_id() == temp_dp->get_domain_id()) {
550 temp_sub->get_qos(temp_qos);
551 if (sub_qos == temp_qos) {
553 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) cleanup_opendds_subscriber - subscriber still in use by other reader\n"));
561 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) cleanup_opendds_subscriber - subscriber no longer in use, delete sub\n"));
563 sub->delete_contained_entities();
564 dp->delete_subscriber(sub);
568 void cleanup_opendds_participant(
const DDS::DomainParticipant_var dp)
570 DDS::DomainParticipant_var temp_dp;
572 Entities::ConnIdToReceiverMap::iterator rdrIter = readers.begin();
573 while (rdrIter != readers.end()) {
574 DDS::Subscriber_var sub = rdrIter->second->dr->get_subscriber();
575 temp_dp = sub->get_participant();
576 if (dp->get_domain_id() == temp_dp->get_domain_id()) {
578 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) cleanup_opendds_participant - participant still in use by reader\n"));
587 Entities::ConnIdToSenderMap::iterator wtrIter = writers.begin();
589 while (wtrIter != writers.end()) {
590 DDS::Publisher_var publisher = wtrIter->second.dw->get_publisher();
591 temp_dp = publisher->get_participant();
592 if (dp->get_domain_id() == temp_dp->get_domain_id()) {
594 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) cleanup_opendds_participant - participant still in use by writer\n"));
602 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) cleanup_opendds_participant - participant for domain: %d no longer in use, delete entities and participant\n", dp->get_domain_id()));
604 dp->delete_contained_entities();
606 dpf->delete_participant(dp);
609 RETURN_CODE_TYPE create_opendds_entities(CONNECTION_ID_TYPE connectionId,
612 const char* topicName,
614 CONNECTION_DIRECTION_TYPE dir,
616 const char* transport)
618 #ifdef DEBUG_OPENDDS_FACETSS 625 if (!dpf)
return INVALID_PARAM;
627 DDS::DomainParticipant_var dp;
628 find_or_create_dp(domainId, participantId, dpf, dp);
629 if (!dp)
return INVALID_PARAM;
632 OpenDDS::DCPS::TypeSupport_var ts =
636 if (!ts)
return INVALID_PARAM;
640 const DDS::Topic_var topic =
642 if (!topic)
return INVALID_PARAM;
646 qos_settings.
apply_to(publisher_qos);
648 DDS::Publisher_var pub;
649 find_or_create_pub(publisher_qos, dp, pub);
650 if (!pub)
return INVALID_PARAM;
652 if (transport && transport[0]) {
654 if (config.
is_nil())
return INVALID_PARAM;
658 return INVALID_PARAM;
663 qos_settings.
apply_to(datawriter_qos);
671 const DDS::DataWriter_var dw =
672 pub->create_datawriter(topic, datawriter_qos, 0, 0);
673 if (!dw)
return INVALID_PARAM;
679 qos_settings.
apply_to(subscriber_qos);
681 DDS::Subscriber_var sub;
682 find_or_create_sub(subscriber_qos, dp, sub);
683 if (!sub)
return INVALID_PARAM;
685 if (transport && transport[0]) {
687 if (config.
is_nil())
return INVALID_PARAM;
691 return INVALID_PARAM;
696 qos_settings.
apply_to(datareader_qos);
704 const DDS::DataReader_var dr =
705 sub->create_datareader(topic, datareader_qos, 0, 0);
706 if (!dr)
return INVALID_PARAM;
730 FACE::RETURN_CODE_TYPE
update_status(FACE::CONNECTION_ID_TYPE connection_id,
733 FACE::TRANSPORT_CONNECTION_STATUS_TYPE& status =
735 FACE::RETURN_CODE_TYPE rc = FACE::INVALID_PARAM;
739 status.LAST_MSG_VALIDITY = FACE::VALID;
740 return FACE::RC_NO_ERROR;
743 rc = FACE::CONNECTION_CLOSED;
break;
746 rc = FACE::INVALID_PARAM;
break;
749 rc = FACE::DATA_BUFFER_TOO_SMALL;
break;
753 rc = FACE::INVALID_MODE;
break;
757 rc = FACE::INVALID_CONFIG;
break;
760 rc = FACE::CONNECTION_CLOSED;
break;
763 rc = FACE::TIMED_OUT;
break;
767 rc = FACE::NOT_AVAILABLE;
break;
770 rc = FACE::PERMISSION_DENIED;
break;
773 status.LAST_MSG_VALIDITY = FACE::INVALID;
781 if (timeout == FACE::INF_TIME_VALUE) {
796 return FACE::INF_TIME_VALUE;
808 FACE::MESSAGE_INSTANCE_GUID
813 FACE::MESSAGE_INSTANCE_GUID message_instance_guid;
814 FACE::LongLong mig_low;
815 FACE::LongLong masked_seq;
818 FACE::Long prefix_representation =
ACE::crc32(reinterpret_cast<const void*>(&pub),
sizeof(pub));
819 masked_seq = orig_seq >> 32;
822 ACE_DEBUG((
LM_WARNING,
"(%P|%t) WARNING: create_message_instance_guid - seq does not fit in FACE::Long, truncating high bits to fit\n"));
824 mig_low = orig_seq & 0xFFFFFFFF;
825 message_instance_guid = (((FACE::LongLong) prefix_representation) << 32 ) | ((FACE::LongLong) mig_low);
849 return message_instance_guid;
853 const DDS::DomainParticipant_var part,
855 FACE::RETURN_CODE_TYPE& return_code)
858 if (!readers.count(connection_id)) {
859 return_code = FACE::INVALID_PARAM;
862 FACE::TS::MessageHeader&
header = readers[connection_id]->last_msg_header;
864 header.platform_view_guid =
Entities::instance()->connections_[connection_id].platform_view_guid;
866 DDS::Subscriber_var temp_sub = readers[connection_id]->dr->get_subscriber();
867 DDS::DomainParticipant_var temp_dp = temp_sub->get_participant();
871 ACE_TEXT(
"failed to get DomainParticipantImpl.\n")));
872 return_code = FACE::NOT_AVAILABLE;
881 readers[connection_id]->sum_recvd_msgs_latency += (
convertTime(now.
to_dds_time()) - header.message_timestamp);
882 ++readers[connection_id]->total_msgs_recvd;
885 ACE_DEBUG((
LM_DEBUG,
"(%P|%t) populate_header_received: Latency is now (tot_latency %d / tot_msgs_recvd %d): %d\n",
886 readers[connection_id]->sum_recvd_msgs_latency,
887 readers[connection_id]->total_msgs_recvd,
888 readers[connection_id]->sum_recvd_msgs_latency/readers[connection_id]->total_msgs_recvd));
899 Entities::ConnIdToSenderMap::iterator wtrIter = writers.begin();
902 while (wtrIter != writers.end()) {
909 if (wtrIter == writers.end()) {
910 ACE_ERROR((
LM_ERROR,
"(%P|%t) populate_header_received: failed to find matching DataWriter instance.\n"));
911 return_code = FACE::NOT_AVAILABLE;
916 wtrIter->second.dw->get_qos(qos);
921 ::DDS::Subscriber_var bit_subscriber
922 = part->get_builtin_subscriber () ;
924 ::DDS::DataReader_var reader
926 ::DDS::PublicationBuiltinTopicDataDataReader_var pub_reader
927 = ::DDS::PublicationBuiltinTopicDataDataReader::_narrow (reader.in ());
929 ACE_ERROR((
LM_ERROR,
"(%P|%t) populate_header_received: failed to get BUILT_IN_PUBLICATION_TOPIC datareader.\n"));
930 return_code = FACE::NOT_AVAILABLE;
936 ::DDS::PublicationBuiltinTopicDataSeq pubdata(1);
938 ret = pub_reader->read_instance(pubdata,
949 "(%P|%t) populate_header_received: failed to read BIT publication data.\n"));
950 return_code = FACE::NOT_AVAILABLE;
955 qos_lifespan = pubdata[i].lifespan;
956 qos_user_data = pubdata[i].user_data;
959 header.message_source_guid =
960 (qos_user_data.
value[0] << 0) |
961 (qos_user_data.
value[1] << 8) |
962 (qos_user_data.
value[2] << 16);
981 if (now >= expiration_time) {
983 header.message_validity = FACE::INVALID;
984 return_code = FACE::RC_NO_ERROR;
989 header.message_validity = FACE::VALID;
990 return_code = FACE::RC_NO_ERROR;
UserDataQosPolicy user_data
#define TheTransportRegistry
Implements the OpenDDS::DCPS::DomainParticipant interfaces.
void populate_header_received(const FACE::CONNECTION_ID_TYPE &connection_id, const DDS::DomainParticipant_var part, const DDS::SampleInfo &sinfo, FACE::RETURN_CODE_TYPE &return_code)
DDS::Time_t to_dds_time() const
const ReturnCode_t RETCODE_PRECONDITION_NOT_MET
FACE::LongLong total_msgs_recvd
const ReturnCode_t RETCODE_INCONSISTENT_POLICY
FACE::MESSAGE_INSTANCE_GUID create_message_instance_guid(const OpenDDS::DCPS::GUID_t &pub, const CORBA::LongLong &orig_seq)
const long DURATION_INFINITE_SEC
void Receive_Message(CONNECTION_ID_TYPE connection_id, TIMEOUT_TYPE timeout, TRANSACTION_ID_TYPE &transaction_id, MessageHeader &message_header, MESSAGE_SIZE_TYPE message_size, RETURN_CODE_TYPE &return_code)
ACE_CDR::LongLong LongLong
sequence< SampleInfo > SampleInfoSeq
const ReturnCode_t RETCODE_ALREADY_DELETED
void Destroy_Connection(CONNECTION_ID_TYPE connection_id, RETURN_CODE_TYPE &return_code)
const SampleStateMask ANY_SAMPLE_STATE
key GuidPrefix_t guidPrefix
ConnIdToReceiverMap receivers_
OpenDDS_FACE_Export void receive_header(FACE::CONNECTION_ID_TYPE connection_id, FACE::TIMEOUT_TYPE, FACE::TRANSACTION_ID_TYPE &transaction_id, FACE::TS::MessageHeader &message_header, FACE::MESSAGE_SIZE_TYPE message_size, FACE::RETURN_CODE_TYPE &return_code)
void Get_Connection_Parameters(CONNECTION_NAME_TYPE &connection_name, CONNECTION_ID_TYPE &connection_id, TRANSPORT_CONNECTION_STATUS_TYPE &status, RETURN_CODE_TYPE &return_code)
bool operator==(const DisjointSequence::OrderedRanges< T > &a, const DisjointSequence::OrderedRanges< T > &b)
GUID_t get_repoid(DDS::InstanceHandle_t id) const
FACE::SYSTEM_TIME_TYPE convertDuration(const DDS::Duration_t &duration)
Conversion processing and value testing utilities for RTPS GUID_t types.
const ReturnCode_t RETCODE_IMMUTABLE_POLICY
static TimePoint_T< SystemClock > now()
long long opendds_reserved_publication_seq
const char *const BUILT_IN_PUBLICATION_TOPIC
void Create_Connection(const CONNECTION_NAME_TYPE connection_name, MESSAGING_PATTERN_TYPE pattern, CONNECTION_ID_TYPE &connection_id, CONNECTION_DIRECTION_TYPE &connection_direction, MESSAGE_SIZE_TYPE &max_message_size, TIMEOUT_TYPE, RETURN_CODE_TYPE &return_code)
OpenDDS_Dcps_Export unsigned int Transport_debug_level
Transport Logging verbosity level.
OpenDDS_Dcps_Export void set_DCPS_debug_level(unsigned int lvl)
DOMAINID_TYPE_NATIVE DomainId_t
#define Registered_Data_Types
static OpenDDS_FACE_Export Entities * instance()
void apply_to(DDS::PublisherQos &target) const
InstanceHandle_t publication_handle
FACE::SYSTEM_TIME_TYPE convertTime(const DDS::Time_t ×tamp)
FACE::CONNECTION_DIRECTION_TYPE direction_
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
const ReturnCode_t RETCODE_TIMEOUT
const ViewStateMask ANY_VIEW_STATE
char config_name_[ALLOWABLE_NAME_LEN]
const ReturnCode_t RETCODE_OUT_OF_RESOURCES
const ReturnCode_t RETCODE_ILLEGAL_OPERATION
FACE::MESSAGE_SIZE_TYPE max_message_size_
FACE::CONNECTION_ID_TYPE connection_id_
void Initialize(const CONFIGURATION_RESOURCE configuration_file, RETURN_CODE_TYPE &return_code)
OPENDDS_STRING connection_name
FACE::SYSTEM_TIME_TYPE sum_recvd_msgs_latency
FACE::RETURN_CODE_TYPE update_status(FACE::CONNECTION_ID_TYPE connection_id, DDS::ReturnCode_t retcode)
ConnIdToSenderMap senders_
ACE_UINT32 crc32(const char *str)
const unsigned long DURATION_INFINITE_NSEC
static TYPE * instance(void)
const ReturnCode_t RETCODE_NOT_ENABLED
const ReturnCode_t RETCODE_NO_DATA
char topic_name_[ALLOWABLE_NAME_LEN]
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
FACE::TRANSPORT_CONNECTION_STATUS_TYPE connection_status
FACE::TS::MessageHeader last_msg_header
FACE::VALIDITY_TYPE status_valid
const ReturnCode_t RETCODE_ERROR
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
LifespanQosPolicy lifespan
const ReturnCode_t RETCODE_OK
const ReturnCode_t RETCODE_UNSUPPORTED
DDS::DataWriterQos & datawriter_qos()
#define TheParticipantFactory
virtual FACE::RETURN_CODE_TYPE messages_waiting(FACE::WAITING_RANGE_TYPE &)
UserDataQosPolicy user_data
UserDataQosPolicy user_data
#define TheServiceParticipant
char type_name_[TYPE_NAME_LEN]
The Internal API and Implementation of OpenDDS.
FACE::MESSAGE_TYPE_GUID platform_view_guid_
FACE::MESSAGE_TYPE_GUID platform_view_guid
const InstanceStateKind ALIVE_INSTANCE_STATE
DDS::Duration_t convertTimeout(FACE::TIMEOUT_TYPE timeout)
void Unregister_Callback(CONNECTION_ID_TYPE connection_id, RETURN_CODE_TYPE &return_code)
#define TOPIC_QOS_DEFAULT
const ReturnCode_t RETCODE_BAD_PARAMETER