| 1046 | |
| 1047 | |
| 1048 | DDS::ReturnCode_t |
| 1049 | DataWriterImpl::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 | |
| 1097 | DDS::ReturnCode_t |
| 1098 | DataWriterImpl::wait_for_acknowledgments(const DDS::Duration_t& max_wait) |
nothing calls this directly
no test coverage detected