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

Method dispose_was_received

dds/DCPS/InstanceState.cpp:114–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

112}
113
114bool InstanceState::dispose_was_received(const GUID_t& writer_id)
115{
116 ACE_GUARD_RETURN(ACE_Recursive_Thread_Mutex, guard, lock_, false);
117 writers_.erase(writer_id);
118
119 //
120 // Manage the instance state on disposal here.
121 //
122 // If disposed by owner then the owner is not re-elected, it can
123 // resume if the writer sends message again.
124 if (instance_state_ & DDS::ALIVE_INSTANCE_STATE) {
125#ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE
126 RcHandle<DataReaderImpl> reader = reader_.lock();
127 if (reader) {
128 DataReaderImpl::OwnershipManagerPtr owner_manager = reader->ownership_manager();
129 if (! exclusive_
130 || (owner_manager && owner_manager->is_owner (handle_, writer_id))) {
131#endif
132 instance_state_ = DDS::NOT_ALIVE_DISPOSED_INSTANCE_STATE;
133 state_updated();
134 schedule_release();
135 return true;
136#ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE
137 }
138 }
139#endif
140 }
141
142 return false;
143}
144
145bool InstanceState::unregister_was_received(const GUID_t& writer_id)
146{

Callers 1

Calls 4

ownership_managerMethod · 0.80
is_ownerMethod · 0.80
eraseMethod · 0.45
lockMethod · 0.45

Tested by

no test coverage detected