private void GetSubscriptionInfo(HttpEntityManager http, UriTemplateMatch match) { if (_httpForwarder.ForwardRequest(http)) { return; } var stream = match.BoundVariables["stream"]; var groupName = match.BoundVariables["subscription"]; var envelope = new SendToHttpEnvelope( _networkSendQueue, http, (args, message) => http.ResponseCodec.To(ToDto(http, message as MonitoringMessage.GetPersistentSubscriptionStatsCompleted).FirstOrDefault()), (args, message) => StatsConfiguration(http, message)); var cmd = new MonitoringMessage.GetPersistentSubscriptionStats(envelope, stream, groupName); Publish(cmd); }
public void Handle(MonitoringMessage.GetPersistentSubscriptionStats message) { if (!_started) { message.Envelope.ReplyWith(new MonitoringMessage.GetPersistentSubscriptionStatsCompleted( MonitoringMessage.GetPersistentSubscriptionStatsCompleted.OperationStatus.NotReady, null) ); return; } List <PersistentSubscription> subscribers; if (!_subscriptionTopics.TryGetValue(message.EventStreamId, out subscribers) || subscribers == null) { message.Envelope.ReplyWith(new MonitoringMessage.GetPersistentSubscriptionStatsCompleted( MonitoringMessage.GetPersistentSubscriptionStatsCompleted.OperationStatus.NotFound, null) ); return; } var subscription = subscribers.FirstOrDefault(x => x.GroupName == message.GroupName); if (subscription == null) { message.Envelope.ReplyWith(new MonitoringMessage.GetPersistentSubscriptionStatsCompleted( MonitoringMessage.GetPersistentSubscriptionStatsCompleted.OperationStatus.NotFound, null) ); return; } var stats = new List <MonitoringMessage.SubscriptionInfo>() { subscription.GetStatistics() }; message.Envelope.ReplyWith(new MonitoringMessage.GetPersistentSubscriptionStatsCompleted( MonitoringMessage.GetPersistentSubscriptionStatsCompleted.OperationStatus.Success, stats) ); }