internal virtual void ReleasePublication(Publication publication) { VerifyActive(); if (publication == _activePublications.Remove(publication.Channel, publication.StreamId)) { LingerResource(publication.ManagedResource()); AwaitResponse(_driverProxy.RemovePublication(publication.RegistrationId), null); } }
internal virtual void ReleasePublication(Publication publication) { if (_isClosed) { throw new InvalidOperationException("Aeron client is closed"); } if (publication == _activePublications.Remove(publication.Channel, publication.StreamId)) { LingerResource(publication.ManagedResource()); AwaitResponse(_driverProxy.RemovePublication(publication.RegistrationId), null); } }
internal virtual void ReleasePublication(Publication publication) { _clientLock.Lock(); try { if (!publication.IsClosed) { publication.InternalClose(); EnsureOpen(); var removedPublication = _resourceByRegIdMap[publication.RegistrationId]; if (_resourceByRegIdMap.Remove(publication.RegistrationId) && publication == removedPublication) { ReleaseLogBuffers(publication.LogBuffers(), publication.OriginalRegistrationId()); AwaitResponse(_driverProxy.RemovePublication(publication.RegistrationId)); } } } finally { _clientLock.Unlock(); } }
internal void ReleasePublication(Publication publication) { _clientLock.Lock(); try { if (_isTerminating || _isClosed) { return; } if (!publication.IsClosed) { EnsureNotReentrant(); publication.InternalClose(); var removedPublication = _resourceByRegIdMap[publication.RegistrationId]; if (_resourceByRegIdMap.Remove(publication.RegistrationId) && publication == removedPublication) { ReleaseLogBuffers(publication.LogBuffers, publication.OriginalRegistrationId); _asyncCommandIdSet.Add(_driverProxy.RemovePublication(publication.RegistrationId)); } } } finally { _clientLock.Unlock(); } }
internal void ReleasePublication(Publication publication) #endif { lock (this) { VerifyDriverIsActive(); if (publication == _activePublications.Remove(publication.Channel, publication.StreamId)) { var correlationId = _driverProxy.RemovePublication(publication.RegistrationId); LingerResource(publication.ManagedResource()); AwaitResponse(correlationId, publication.Channel, false); } } }
internal virtual void ReleasePublication(Publication publication) { lock (this) { VerifyDriverIsActive(); if (publication == _activePublications.Remove(publication.Channel, publication.StreamId)) { var correlationId = _driverProxy.RemovePublication(publication.RegistrationId); var timeout = _nanoClock.NanoTime() + _driverTimeoutNs; LingerResource(publication.ManagedResource()); DoWorkUntil(correlationId, timeout, publication.Channel); } } }