internal Publication AddPublication(string channel, int streamId) { VerifyActive(); Publication publication = _activePublications.Get(channel, streamId); if (null == publication) { AwaitResponse(_driverProxy.AddPublication(channel, streamId), channel); publication = _activePublications.Get(channel, streamId); } publication.IncRef(); return(publication); }
internal ConcurrentPublication AddPublication(string channel, int streamId) { _clientLock.Lock(); try { EnsureOpen(); _stashedChannel = channel; long registrationId = _driverProxy.AddPublication(channel, streamId); AwaitResponse(registrationId); return((ConcurrentPublication)_resourceByRegIdMap[registrationId]); // TODO dictionary semantics if non-existant } finally { _clientLock.Unlock(); } }
internal Publication AddPublication(string channel, int streamId) { if (_isClosed) { throw new InvalidOperationException("Aeron client is closed"); } Publication publication = _activePublications.Get(channel, streamId); if (null == publication) { AwaitResponse(_driverProxy.AddPublication(channel, streamId), channel); publication = _activePublications.Get(channel, streamId); } publication.IncRef(); return(publication); }
internal Publication AddPublication(string channel, int streamId) { lock (this) { VerifyDriverIsActive(); var publication = _activePublications.Get(channel, streamId); if (publication == null) { var correlationId = _driverProxy.AddPublication(channel, streamId); AwaitResponse(correlationId, channel, true); publication = _activePublications.Get(channel, streamId); } publication.IncRef(); return(publication); } }
internal Publication AddPublication(string channel, int streamId) { lock (this) { VerifyDriverIsActive(); var publication = _activePublications.Get(channel, streamId); if (publication == null) { var correlationId = _driverProxy.AddPublication(channel, streamId); var timeout = _nanoClock.NanoTime() + _driverTimeoutNs; DoWorkUntil(correlationId, timeout, channel); publication = _activePublications.Get(channel, streamId); } publication.IncRef(); return(publication); } }