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