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

Method dispose

dds/DCPS/DataWriterImpl.cpp:2030–2098  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2028}
2029
2030DDS::ReturnCode_t
2031DataWriterImpl::dispose(DDS::InstanceHandle_t handle,
2032 const Sample& samp,
2033 const DDS::Time_t & source_timestamp)
2034{
2035 DBG_ENTRY_LVL("DataWriterImpl","dispose",6);
2036
2037 if (!enabled_) {
2038 ACE_ERROR_RETURN((LM_ERROR,
2039 ACE_TEXT("(%P|%t) ERROR: DataWriterImpl::dispose: ")
2040 ACE_TEXT("Entity is not enabled.\n")),
2041 DDS::RETCODE_NOT_ENABLED);
2042 }
2043
2044 DDS::ReturnCode_t ret = DDS::RETCODE_ERROR;
2045
2046 ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, guard, get_lock(), ret);
2047
2048 Message_Block_Ptr registered_sample_data;
2049 ret = this->data_container_->dispose(handle, registered_sample_data);
2050
2051 if (ret != DDS::RETCODE_OK) {
2052 ACE_ERROR_RETURN((LM_ERROR,
2053 ACE_TEXT("(%P|%t) ERROR: ")
2054 ACE_TEXT("DataWriterImpl::dispose: ")
2055 ACE_TEXT("dispose failed.\n")),
2056 ret);
2057 }
2058
2059 DataSampleElement* element = 0;
2060 ret = this->data_container_->obtain_buffer_for_control(element);
2061
2062 if (ret != DDS::RETCODE_OK) {
2063 ACE_ERROR_RETURN((LM_ERROR,
2064 ACE_TEXT("(%P|%t) ERROR: ")
2065 ACE_TEXT("DataWriterImpl::dispose: ")
2066 ACE_TEXT("obtain_buffer_for_control returned %d.\n"),
2067 ret),
2068 ret);
2069 }
2070
2071 Message_Block_Ptr sample(create_control_message(DISPOSE_INSTANCE,
2072 element->get_header(),
2073 OPENDDS_MOVE_NS::move(registered_sample_data),
2074 source_timestamp));
2075 element->set_sample(OPENDDS_MOVE_NS::move(sample));
2076
2077 ret = this->data_container_->enqueue_control(element);
2078
2079 if (ret != DDS::RETCODE_OK) {
2080 data_container_->release_buffer(element);
2081 ACE_ERROR_RETURN((LM_ERROR,
2082 ACE_TEXT("(%P|%t) ERROR: ")
2083 ACE_TEXT("DataWriterImpl::dispose: ")
2084 ACE_TEXT("enqueue_control failed.\n")),
2085 ret);
2086 }
2087

Callers 7

dispose_topic_bitMethod · 0.45
dispose_helperMethod · 0.45
mainMethod · 0.45

Calls 9

get_lockFunction · 0.85
moveFunction · 0.85
enqueue_controlMethod · 0.80
release_bufferMethod · 0.80
native_dataMethod · 0.80
instance_stateMethod · 0.80
on_disposedMethod · 0.80
get_value_dispatcherFunction · 0.70

Tested by 1

mainMethod · 0.36