예제 #1
0
 internal void RemoveFailoverRequest(FailoverRequest request)
 {
     lock (requests)
     {
         requests.Remove(request);
     }
 }
예제 #2
0
 internal void AddFailoverRequest(FailoverRequest request)
 {
     lock (requests)
     {
         requests.Add(request);
     }
 }
예제 #3
0
        public Task Unsubscribe(string name)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, SendTimeout)
            {
                DoTask = activeProvider => activeProvider.Unsubscribe(name),
                Name   = nameof(Unsubscribe)
            };

            request.Run();

            return(request.Task);
        }
예제 #4
0
        public Task StopResource(INmsResource resourceInfo)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, requestTimeout)
            {
                DoTask = activeProvider => activeProvider.StopResource(resourceInfo),
                Name   = nameof(StopResource)
            };

            request.Run();

            return(request.Task);
        }
예제 #5
0
        public Task Send(OutboundMessageDispatch envelope)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, SendTimeout)
            {
                DoTask = activeProvider => activeProvider.Send(envelope),
                Name   = nameof(Send)
            };

            request.Run();

            return(request.Task);
        }
예제 #6
0
        public Task CreateResource(ResourceInfo resourceInfo)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, requestTimeout)
            {
                DoTask = activeProvider => provider.CreateResource(resourceInfo),
                Name   = nameof(CreateResource)
            };

            request.Run();

            return(request.Task);
        }
예제 #7
0
        public Task Commit(NmsTransactionInfo transactionInfo, NmsTransactionInfo nextTransactionInfo)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, SendTimeout)
            {
                DoTask             = activeProvider => activeProvider.Commit(transactionInfo, nextTransactionInfo),
                Name               = nameof(Commit),
                FailureWhenOffline = true
            };

            request.Run();

            return(request.Task);
        }
예제 #8
0
        public Task Rollback(NmsTransactionInfo transactionInfo, NmsTransactionInfo nextTransactionInfo)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, SendTimeout)
            {
                DoTask = activeProvider => activeProvider.Rollback(transactionInfo, nextTransactionInfo),
                Name   = nameof(Rollback),
                SucceedsWhenOffline = true
            };

            request.Run();

            return(request.Task);
        }
예제 #9
0
        public Task Acknowledge(InboundMessageDispatch envelope, AckType ackType)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, requestTimeout)
            {
                DoTask             = activeProvider => activeProvider.Acknowledge(envelope, ackType),
                FailureWhenOffline = true,
                Name = nameof(Acknowledge)
            };

            request.Run();

            return(request.Task);
        }
예제 #10
0
        public Task Acknowledge(NmsSessionId sessionId, AckType ackType)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, requestTimeout)
            {
                DoTask             = activeProvider => activeProvider.Acknowledge(sessionId, ackType),
                FailureWhenOffline = true,
                Name = nameof(Acknowledge)
            };

            request.Run();

            return(request.Task);
        }
예제 #11
0
        public Task Recover(NmsSessionId sessionId)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, requestTimeout)
            {
                DoTask = activeProvider => activeProvider.Recover(sessionId),
                SucceedsWhenOffline = true,
                Name = nameof(Recover)
            };

            request.Run();

            return(request.Task);
        }
예제 #12
0
        public Task DestroyResource(INmsResource resourceInfo)
        {
            CheckClosed();

            FailoverRequest request = new FailoverRequest(this, requestTimeout)
            {
                DoTask = activeProvider => activeProvider.DestroyResource(resourceInfo),
                Name   = nameof(DestroyResource),

                // Allow this to succeed, resource won't get recreated on reconnect.
                SucceedsWhenOffline = true
            };

            request.Run();

            return(request.Task);
        }