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); } }
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); } }