MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / send_request_ack

Method send_request_ack

dds/DCPS/DataWriterImpl.cpp:1048–1095  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1046
1047
1048DDS::ReturnCode_t
1049DataWriterImpl::send_request_ack()
1050{
1051 ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex,
1052 guard,
1053 get_lock(),
1054 DDS::RETCODE_ERROR);
1055
1056
1057 DataSampleElement* element = 0;
1058 DDS::ReturnCode_t ret = this->data_container_->obtain_buffer_for_control(element);
1059
1060 if (ret != DDS::RETCODE_OK) {
1061 ACE_ERROR_RETURN((LM_ERROR,
1062 ACE_TEXT("(%P|%t) ERROR: ")
1063 ACE_TEXT("DataWriterImpl::send_request_ack: ")
1064 ACE_TEXT("obtain_buffer_for_control returned %d.\n"),
1065 ret),
1066 ret);
1067 }
1068
1069 Message_Block_Ptr blk;
1070 // Add header with the registration sample data.
1071 Message_Block_Ptr sample(
1072 create_control_message(
1073 REQUEST_ACK,
1074 element->get_header(),
1075 OPENDDS_MOVE_NS::move(blk),
1076 SystemTimePoint::now().to_idl_struct()));
1077
1078 element->set_sample(OPENDDS_MOVE_NS::move(sample));
1079
1080 ret = this->data_container_->enqueue_control(element);
1081
1082 if (ret != DDS::RETCODE_OK) {
1083 data_container_->release_buffer(element);
1084 ACE_ERROR_RETURN((LM_ERROR,
1085 ACE_TEXT("(%P|%t) ERROR: ")
1086 ACE_TEXT("DataWriterImpl::send_request_ack: ")
1087 ACE_TEXT("enqueue_control failed.\n")),
1088 ret);
1089 }
1090
1091
1092 send_all_to_flush_control(guard);
1093
1094 return DDS::RETCODE_OK;
1095}
1096
1097DDS::ReturnCode_t
1098DataWriterImpl::wait_for_acknowledgments(const DDS::Duration_t& max_wait)

Callers

nothing calls this directly

Calls 5

get_lockFunction · 0.85
moveFunction · 0.85
enqueue_controlMethod · 0.80
release_bufferMethod · 0.80

Tested by

no test coverage detected