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);
        }
示例#2
0
        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)
                                       );
        }