예제 #1
0
        private IEnumerable <SubscriptionSummary> ToSummaryDto(HttpEntityManager manager,
                                                               MonitoringMessage.GetPersistentSubscriptionStatsCompleted message)
        {
            if (message == null)
            {
                yield break;
            }
            if (message.SubscriptionStats == null)
            {
                yield break;
            }

            foreach (var stat in message.SubscriptionStats)
            {
                string escapedStreamId  = Uri.EscapeDataString(stat.EventStreamId);
                string escapedGroupName = Uri.EscapeDataString(stat.GroupName);
                var    info             = new SubscriptionSummary {
                    Links = new List <RelLink>()
                    {
                        new RelLink(
                            MakeUrl(manager,
                                    string.Format("/subscriptions/{0}/{1}/info", escapedStreamId, escapedGroupName)),
                            "detail"),
                    },
                    EventStreamId            = stat.EventStreamId,
                    GroupName                = stat.GroupName,
                    Status                   = stat.Status,
                    AverageItemsPerSecond    = stat.AveragePerSecond,
                    TotalItemsProcessed      = stat.TotalItems,
                    LastKnownEventNumber     = stat.LastKnownMessage,
                    LastProcessedEventNumber = stat.LastProcessedEventNumber,
                    ParkedMessageUri         = MakeUrl(manager,
                                                       string.Format(parkedMessageUriTemplate, escapedStreamId, escapedGroupName)),
                    GetMessagesUri = MakeUrl(manager,
                                             string.Format("/subscriptions/{0}/{1}/{2}", escapedStreamId, escapedGroupName,
                                                           DefaultNumberOfMessagesToGet)),
                    TotalInFlightMessages = stat.TotalInFlightMessages,
                };
                if (stat.Connections != null)
                {
                    info.ConnectionCount = stat.Connections.Count;
                }

                yield return(info);
            }
        }
예제 #2
0
        private IEnumerable <SubscriptionInfo> ToDto(HttpEntityManager manager,
                                                     MonitoringMessage.GetPersistentSubscriptionStatsCompleted message)
        {
            if (message == null)
            {
                yield break;
            }
            if (message.SubscriptionStats == null)
            {
                yield break;
            }

            foreach (var stat in message.SubscriptionStats)
            {
                string escapedStreamId  = Uri.EscapeDataString(stat.EventStreamId);
                string escapedGroupName = Uri.EscapeDataString(stat.GroupName);
                var    info             = new SubscriptionInfo {
                    Links = new List <RelLink>()
                    {
                        new RelLink(
                            MakeUrl(manager,
                                    string.Format("/subscriptions/{0}/{1}/info", escapedStreamId, escapedGroupName)),
                            "detail"),
                        new RelLink(
                            MakeUrl(manager,
                                    string.Format("/subscriptions/{0}/{1}/replayParked", escapedStreamId,
                                                  escapedGroupName)), "replayParked")
                    },
                    EventStreamId             = stat.EventStreamId,
                    GroupName                 = stat.GroupName,
                    Status                    = stat.Status,
                    AverageItemsPerSecond     = stat.AveragePerSecond,
                    TotalItemsProcessed       = stat.TotalItems,
                    CountSinceLastMeasurement = stat.CountSinceLastMeasurement,
                    LastKnownEventNumber      = stat.LastKnownMessage,
                    LastProcessedEventNumber  = stat.LastProcessedEventNumber,
                    ReadBufferCount           = stat.ReadBufferCount,
                    LiveBufferCount           = stat.LiveBufferCount,
                    RetryBufferCount          = stat.RetryBufferCount,
                    TotalInFlightMessages     = stat.TotalInFlightMessages,
                    OutstandingMessagesCount  = stat.OutstandingMessagesCount,
                    ParkedMessageUri          = MakeUrl(manager,
                                                        string.Format(parkedMessageUriTemplate, escapedStreamId, escapedGroupName)),
                    GetMessagesUri = MakeUrl(manager,
                                             string.Format("/subscriptions/{0}/{1}/{2}", escapedStreamId, escapedGroupName,
                                                           DefaultNumberOfMessagesToGet)),
                    Config = new SubscriptionConfigData {
                        CheckPointAfterMilliseconds = stat.CheckPointAfterMilliseconds,
                        BufferSize                 = stat.BufferSize,
                        LiveBufferSize             = stat.LiveBufferSize,
                        MaxCheckPointCount         = stat.MaxCheckPointCount,
                        MaxRetryCount              = stat.MaxRetryCount,
                        MessageTimeoutMilliseconds = stat.MessageTimeoutMilliseconds,
                        MinCheckPointCount         = stat.MinCheckPointCount,
                        NamedConsumerStrategy      = stat.NamedConsumerStrategy,
                        PreferRoundRobin           = stat.NamedConsumerStrategy == SystemConsumerStrategies.RoundRobin,
                        ReadBatchSize              = stat.ReadBatchSize,
                        ResolveLinktos             = stat.ResolveLinktos,
                        StartFrom          = stat.StartFrom,
                        ExtraStatistics    = stat.ExtraStatistics,
                        MaxSubscriberCount = stat.MaxSubscriberCount
                    },
                    Connections = new List <ConnectionInfo>()
                };
                if (stat.Connections != null)
                {
                    foreach (var connection in stat.Connections)
                    {
                        info.Connections.Add(new ConnectionInfo {
                            Username = connection.Username,
                            From     = connection.From,
                            AverageItemsPerSecond     = connection.AverageItemsPerSecond,
                            CountSinceLastMeasurement = connection.CountSinceLastMeasurement,
                            TotalItemsProcessed       = connection.TotalItems,
                            AvailableSlots            = connection.AvailableSlots,
                            InFlightMessages          = connection.InFlightMessages,
                            ExtraStatistics           = connection.ObservedMeasurements ?? new List <Measurement>(),
                            ConnectionName            = connection.ConnectionName,
                        });
                    }
                }

                yield return(info);
            }
        }