public void Handle(ClientMessage.FilteredSubscribeToStream msg)
        {
            var streamAccess = _readIndex.CheckStreamAccess(
                msg.EventStreamId.IsEmptyString() ? SystemStreams.AllStream : msg.EventStreamId, StreamAccessType.Read,
                msg.User);

            if (streamAccess.Granted)
            {
                var lastEventNumber = msg.EventStreamId.IsEmptyString()
                                        ? (long?)null
                                        : _readIndex.GetStreamLastEventNumber(msg.EventStreamId);
                var lastCommitPos = _readIndex.LastIndexedPosition;
                SubscribeToStream(msg.CorrelationId, msg.Envelope, msg.ConnectionId, msg.EventStreamId,
                                  msg.ResolveLinkTos, lastCommitPos, lastEventNumber, msg.EventFilter,
                                  msg.CheckpointInterval);
                var subscribedMessage =
                    new ClientMessage.SubscriptionConfirmation(msg.CorrelationId, lastCommitPos, lastEventNumber);
                msg.Envelope.ReplyWith(subscribedMessage);
            }
            else
            {
                msg.Envelope.ReplyWith(
                    new ClientMessage.SubscriptionDropped(msg.CorrelationId, SubscriptionDropReason.AccessDenied));
            }
        }
Beispiel #2
0
        protected override TcpPackage CreateSubscriptionPackage()
        {
            var dto = new ClientMessage.FilteredSubscribeToStream(_streamId, _resolveLinkTos,
                                                                  _filter.Value, _checkpointInterval);

            return(new TcpPackage(
                       TcpCommand.SubscribeToStreamFiltered, _userCredentials != null ? TcpFlags.Authenticated : TcpFlags.None,
                       _correlationId, _userCredentials != null ? _userCredentials.Username : null,
                       _userCredentials != null ? _userCredentials.Password : null, dto.Serialize()));
        }
        public void Handle(ClientMessage.FilteredSubscribeToStream msg)
        {
            var lastEventNumber = msg.EventStreamId.IsEmptyString()
                                        ? (long?)null
                                        : _readIndex.GetStreamLastEventNumber(msg.EventStreamId);
            var lastCommitPos = _readIndex.LastIndexedPosition;

            SubscribeToStream(msg.CorrelationId, msg.Envelope, msg.ConnectionId, msg.EventStreamId,
                              msg.ResolveLinkTos, lastCommitPos, lastEventNumber, msg.EventFilter,
                              msg.CheckpointInterval);
            var subscribedMessage =
                new ClientMessage.SubscriptionConfirmation(msg.CorrelationId, lastCommitPos, lastEventNumber);

            msg.Envelope.ReplyWith(subscribedMessage);
        }