Ejemplo n.º 1
0
        public void Handle(ClientMessage.ReplayParkedMessage message)
        {
            var key = BuildSubscriptionGroupKey(message.EventStreamId, message.GroupName);
            PersistentSubscription subscription;
            var streamAccess = _readIndex.CheckStreamAccess(SystemStreams.SettingsStream, StreamAccessType.Write, message.User);

            if (!streamAccess.Granted)
            {
                message.Envelope.ReplyWith(new ClientMessage.ReplayMessagesReceived(message.CorrelationId,
                                                                                    ClientMessage.ReplayMessagesReceived.ReplayMessagesReceivedResult.AccessDenied,
                                                                                    "You do not have permissions to replay messages"));
                return;
            }

            if (!_subscriptionsById.TryGetValue(key, out subscription))
            {
                message.Envelope.ReplyWith(new ClientMessage.ReplayMessagesReceived(message.CorrelationId,
                                                                                    ClientMessage.ReplayMessagesReceived.ReplayMessagesReceivedResult.DoesNotExist,
                                                                                    "Unable to locate '" + key + "'"));
                return;
            }
            subscription.RetrySingleMessage(message.Event);
            message.Envelope.ReplyWith(new ClientMessage.ReplayMessagesReceived(message.CorrelationId,
                                                                                ClientMessage.ReplayMessagesReceived.ReplayMessagesReceivedResult.Success, ""));
        }
Ejemplo n.º 2
0
        public void Handle(ClientMessage.ReplayParkedMessage message)
        {
            var key = BuildSubscriptionGroupKey(message.EventStreamId, message.GroupName);
            PersistentSubscription subscription;

            if (!IsUserOpsOrAdmin(message.User))
            {
                message.Envelope.ReplyWith(new ClientMessage.ReplayMessagesReceived(message.CorrelationId,
                                                                                    ClientMessage.ReplayMessagesReceived.ReplayMessagesReceivedResult.AccessDenied,
                                                                                    "You do not have permissions to replay messages"));
                return;
            }

            if (!_subscriptionsById.TryGetValue(key, out subscription))
            {
                message.Envelope.ReplyWith(new ClientMessage.ReplayMessagesReceived(message.CorrelationId,
                                                                                    ClientMessage.ReplayMessagesReceived.ReplayMessagesReceivedResult.DoesNotExist,
                                                                                    "Unable to locate '" + key + "'"));
                return;
            }

            subscription.RetrySingleMessage(message.Event);
            message.Envelope.ReplyWith(new ClientMessage.ReplayMessagesReceived(message.CorrelationId,
                                                                                ClientMessage.ReplayMessagesReceived.ReplayMessagesReceivedResult.Success, ""));
        }