Пример #1
0
        internal Subscription AddSubscription(string channel, int streamId)
        {
            VerifyActive();

            long         correlationId = _driverProxy.AddSubscription(channel, streamId);
            Subscription subscription  = new Subscription(this, channel, streamId, correlationId, _ctx.AvailableImageHandler(), _ctx.unavailableImageHandler());

            _activeSubscriptions.Add(subscription);

            AwaitResponse(correlationId, channel);

            return(subscription);
        }
Пример #2
0
        internal Subscription AddSubscription(string channel, int streamId)
        {
            lock (this)
            {
                VerifyDriverIsActive();

                var correlationId = _driverProxy.AddSubscription(channel, streamId);

                var subscription = new Subscription(this, channel, streamId, correlationId);
                _activeSubscriptions.Add(subscription);

                AwaitResponse(correlationId, channel, true);

                return(subscription);
            }
        }
Пример #3
0
        internal Subscription AddSubscription(string channel, int streamId, AvailableImageHandler availableImageHandler, UnavailableImageHandler unavailableImageHandler)
        {
            if (_isClosed)
            {
                throw new InvalidOperationException("Aeron client is closed");
            }

            long         correlationId = _driverProxy.AddSubscription(channel, streamId);
            Subscription subscription  = new Subscription(this, channel, streamId, correlationId, availableImageHandler, unavailableImageHandler);

            _activeSubscriptions.Add(subscription);

            AwaitResponse(correlationId, channel);

            return(subscription);
        }
Пример #4
0
        internal Subscription AddSubscription(string channel, int streamId)
        {
            lock (this)
            {
                VerifyDriverIsActive();

                var correlationId = _driverProxy.AddSubscription(channel, streamId);
                var timeout       = _nanoClock.NanoTime() + _driverTimeoutNs;

                var subscription = new Subscription(this, channel, streamId, correlationId);
                _activeSubscriptions.Add(subscription);

                DoWorkUntil(correlationId, timeout, channel);

                return(subscription);
            }
        }
Пример #5
0
        internal virtual Subscription AddSubscription(string channel, int streamId, AvailableImageHandler availableImageHandler, UnavailableImageHandler unavailableImageHandler)
        {
            _clientLock.Lock();
            try
            {
                EnsureOpen();

                long         correlationId = _driverProxy.AddSubscription(channel, streamId);
                Subscription subscription  = new Subscription(this, channel, streamId, correlationId, availableImageHandler, unavailableImageHandler);

                _resourceByRegIdMap[correlationId] = subscription;

                AwaitResponse(correlationId);

                return(subscription);
            }
            finally
            {
                _clientLock.Unlock();
            }
        }