| 112 | } |
| 113 | |
| 114 | bool 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 | |
| 145 | bool InstanceState::unregister_was_received(const GUID_t& writer_id) |
| 146 | { |
no test coverage detected