예제 #1
0
        private PersistentResponse GetResponse(MessageResult result)
        {
            // Do a single sweep through the results to process commands and extract values
            ProcessResults(result);

            Debug.Assert(GetCursor != null, "Unable to resolve the cursor since the method is null");

            // Resolve the cursor
            string id = GetCursor();

            var response = new PersistentResponse(ExcludeMessage)
            {
                MessageId  = id,
                Messages   = result.Messages,
                Disconnect = _disconnected,
                Aborted    = _aborted,
                TotalCount = result.TotalCount,
            };

            PopulateResponseState(response);

            _counters.ConnectionMessagesReceivedTotal.IncrementBy(result.TotalCount);
            _counters.ConnectionMessagesReceivedPerSec.IncrementBy(result.TotalCount);

            return(response);
        }
예제 #2
0
 public IDisposable Receive(string messageId, Func <PersistentResponse, Task <bool> > callback, int maxMessages)
 {
     return(_bus.Subscribe(this, messageId, result =>
     {
         PersistentResponse response = GetResponse(result);
         return callback(response);
     },
                           maxMessages));
 }
예제 #3
0
        private void PopulateResponseState(PersistentResponse response)
        {
            // Set the groups on the outgoing transport data
            if (_groups.Count > 0)
            {
                if (response.TransportData == null)
                {
                    response.TransportData = new Dictionary <string, object>();
                }

                response.TransportData["Groups"] = _groups.GetSnapshot();
            }
        }
예제 #4
0
        private void PopulateResponseState(PersistentResponse response)
        {
            var groupDiff = _groups.GetDiff();

            response.ResetGroups = groupDiff.Reset;

            if (groupDiff.Added.Count > 0)
            {
                response.AddedGroups = groupDiff.Added;
            }

            if (groupDiff.Removed.Count > 0)
            {
                response.RemovedGroups = groupDiff.Removed;
            }
        }
예제 #5
0
        private PersistentResponse GetResponse(MessageResult result)
        {
            // Do a single sweep through the results to process commands and extract values
            ProcessResults(result);

            var response = new PersistentResponse(ExcludeMessage)
            {
                MessageId  = result.LastMessageId,
                Messages   = result.Messages,
                Disconnect = _disconnected,
                Aborted    = _aborted,
                TotalCount = result.TotalCount,
            };

            PopulateResponseState(response);

            _counters.ConnectionMessagesReceivedTotal.IncrementBy(result.TotalCount);
            _counters.ConnectionMessagesReceivedPerSec.IncrementBy(result.TotalCount);

            return(response);
        }
예제 #6
0
        private void PopulateResponseState(PersistentResponse response)
        {
            // Set the groups on the outgoing transport data
            if (_groups.Count > 0)
            {
                if (response.TransportData == null)
                {
                    response.TransportData = new Dictionary<string, object>();
                }

                response.TransportData["Groups"] = _groups.GetSnapshot();
            }
        }
예제 #7
0
        private PersistentResponse GetResponse(MessageResult result)
        {
            // Do a single sweep through the results to process commands and extract values
            ProcessResults(result);

            var response = new PersistentResponse(ExcludeMessage)
            {
                MessageId = result.LastMessageId,
                Messages = result.Messages,
                Disconnect = _disconnected,
                Aborted = _aborted,
                TotalCount = result.TotalCount,
            };

            PopulateResponseState(response);

            _counters.ConnectionMessagesReceivedTotal.IncrementBy(result.TotalCount);
            _counters.ConnectionMessagesReceivedPerSec.IncrementBy(result.TotalCount);

            return response;
        }
예제 #8
0
파일: Connection.cs 프로젝트: rustd/SignalR
        private void PopulateResponseState(PersistentResponse response)
        {
            var groupDiff = _groups.GetDiff();

            response.ResetGroups = groupDiff.Reset;

            if (groupDiff.Added.Count > 0)
            {
                response.AddedGroups = groupDiff.Added;
            }

            if (groupDiff.Removed.Count > 0)
            {
                response.RemovedGroups = groupDiff.Removed;
            }
        }
예제 #9
0
파일: Connection.cs 프로젝트: rustd/SignalR
        private PersistentResponse GetResponse(MessageResult result)
        {
            // Do a single sweep through the results to process commands and extract values
            ProcessResults(result);

            Debug.Assert(GetCursor != null, "Unable to resolve the cursor since the method is null");

            // Resolve the cursor
            string id = GetCursor();

            var response = new PersistentResponse(ExcludeMessage)
            {
                MessageId = id,
                Messages = result.Messages,
                Disconnect = _disconnected,
                Aborted = _aborted,
                TotalCount = result.TotalCount,
            };

            PopulateResponseState(response);

            _counters.ConnectionMessagesReceivedTotal.IncrementBy(result.TotalCount);
            _counters.ConnectionMessagesReceivedPerSec.IncrementBy(result.TotalCount);

            return response;
        }