/// <summary>
 /// Creates an instance of <see cref="PassiveSubscription"/>
 /// </summary>
 /// <param name="owner"></param>
 /// <param name="sid"></param>
 /// <param name="subject"></param>
 /// <param name="queue"></param>
 internal PassiveSubscription(
     SubscriptionPool owner,
     long sid,
     string subject,
     string queue
     )
     : base(owner, sid, subject, queue, useCache: true)
 {
     this._mainSem = new SemaphoreSlim(0);
 }
Esempio n. 2
0
 /// <summary>
 /// Creates an instance of <see cref="ReactiveSubscription"/>
 /// </summary>
 /// <param name="owner"></param>
 /// <param name="sid"></param>
 /// <param name="subject"></param>
 /// <param name="queue"></param>
 /// <param name="syncHandler"></param>
 /// <param name="asyncHandler"></param>
 internal ReactiveSubscription(
     SubscriptionPool owner,
     long sid,
     string subject,
     string queue,
     Action <MsgOut, CancellationToken> syncHandler,
     Func <MsgOut, CancellationToken, Task> asyncHandler
     )
     : base(owner, sid, subject, queue, useCache: true)
 {
     this._syncHandler  = syncHandler;
     this._asyncHandler = asyncHandler;
     this._cts          = new CancellationTokenSource();
 }
Esempio n. 3
0
        /// <summary>
        /// Constructor for an instance of <see cref="SubscriptionBase"/>
        /// </summary>
        /// <param name="owner"></param>
        /// <param name="sid"></param>
        /// <param name="subject"></param>
        /// <param name="queue"></param>
        /// <param name="useCache"></param>
        protected SubscriptionBase(
            SubscriptionPool owner,
            long sid,
            string subject,
            string queue,
            bool useCache
            )
        {
            this._owner    = owner;
            this.SubId     = sid;
            this._subject  = subject;
            this._queue    = queue;
            this._useCache = useCache;

            if (useCache)
            {
                this._deliveringQueue  = new Queue <MsgOut>();
                this._deliveringLocker = new object();

                this.UpdateActualLimits();
            }
        }