Moved thread_state_awake in dds_unregister_instance_ih_ts.

Signed-off-by: Martin Bremmer <martin.bremmer@adlinktech.com>
This commit is contained in:
Martin Bremmer 2019-05-27 14:23:16 +02:00 committed by eboasson
parent 3574ac6903
commit 2c31e4aa46
2 changed files with 32 additions and 2 deletions

View file

@ -241,12 +241,11 @@ dds_unregister_instance_ih_ts(
if (wr->m_entity.m_qos) {
dds_qget_writer_data_lifecycle (wr->m_entity.m_qos, &autodispose);
}
thread_state_awake (ts1);
if (autodispose) {
dds_instance_remove (wr->m_topic, NULL, handle);
action |= DDS_WR_DISPOSE_BIT;
}
thread_state_awake (ts1);
tk = ddsi_tkmap_find_by_id (gv.m_tkmap, handle);
if (tk) {
struct ddsi_sertopic *tp = wr->m_topic->m_stopic;

View file

@ -609,6 +609,37 @@ CU_Test(ddsc_unregister_instance_ih_ts, unregistering_past_sample, .init=unregis
}
/*************************************************************************************************/
/*************************************************************************************************/
CU_Test(ddsc_unregister_instance_ih_ts, unregistering_instance)
{
Space_Type1 testData = { 0, 22, 22 };
dds_instance_handle_t ih = 0;
dds_return_t ret;
char name[100];
/* Create a writer that WILL automatically dispose unregistered samples. */
g_participant = dds_create_participant(DDS_DOMAIN_DEFAULT, NULL, NULL);
CU_ASSERT_FATAL(g_participant > 0);
g_topic = dds_create_topic(g_participant, &Space_Type1_desc, create_topic_name("ddsc_unregistering_instance_test", name, 100), NULL, NULL);
CU_ASSERT_FATAL(g_topic > 0);
g_writer = dds_create_writer(g_participant, g_topic, NULL, NULL);
CU_ASSERT_FATAL(g_writer > 0);
/* Register the instance. */
ret = dds_register_instance(g_writer, &ih, &testData);
CU_ASSERT_EQUAL_FATAL(ret, DDS_RETCODE_OK);
CU_ASSERT_NOT_EQUAL_FATAL(ih, DDS_HANDLE_NIL);
/* Unregister the instance. */
ret = dds_unregister_instance_ih_ts(g_writer, ih, dds_time());
CU_ASSERT_EQUAL_FATAL(ret, DDS_RETCODE_OK);
dds_delete(g_writer);
dds_delete(g_topic);
dds_delete(g_participant);
}
/*************************************************************************************************/
/*************************************************************************************************/
CU_Test(ddsc_unregister_instance, dispose_unregistered_sample, .init=unregistering_init, .fini=unregistering_fini)
{