Example #1
0
        private StorageMessage.CheckStreamAccessCompleted CheckStreamAccess(StorageMessage.CheckStreamAccess msg)
        {
            string streamId = msg.EventStreamId;

            try
            {
                if (msg.EventStreamId == null)
                {
                    if (msg.TransactionId == null)
                    {
                        throw new Exception("No transaction ID specified.");
                    }
                    streamId = _readIndex.GetEventStreamIdByTransactionId(msg.TransactionId.Value);
                    if (streamId == null)
                    {
                        throw new Exception(string.Format("No transaction with ID {0} found.", msg.TransactionId));
                    }
                }
                var result = _readIndex.CheckStreamAccess(streamId, msg.AccessType, msg.User);
                return(new StorageMessage.CheckStreamAccessCompleted(msg.CorrelationId, streamId, msg.TransactionId, msg.AccessType, result));
            }
            catch (Exception exc)
            {
                Log.ErrorException(exc, "Error during processing CheckStreamAccess({0}, {1}) request.", msg.EventStreamId, msg.TransactionId);
                return(new StorageMessage.CheckStreamAccessCompleted(msg.CorrelationId, streamId, msg.TransactionId,
                                                                     msg.AccessType, new StreamAccess(false)));
            }
        }
Example #2
0
        private StorageMessage.CheckStreamAccessCompleted CheckStreamAccess(StorageMessage.CheckStreamAccess msg)
        {
            string streamId = msg.EventStreamId;

            try
            {
                if (msg.EventStreamId == null)
                {
                    if (msg.TransactionId == null)
                    {
                        throw new Exception("No transaction ID specified.");
                    }
                    var transInfo = _readIndex.GetTransactionInfo(_writerCheckpoint.Read(), msg.TransactionId.Value);
                    if (transInfo.TransactionOffset < -1 || transInfo.EventStreamId.IsEmptyString())
                    {
                        throw new Exception(
                                  string.Format("Invalid transaction info found for transaction ID {0}. "
                                                + "Possibly wrong transaction ID provided. TransactionOffset: {1}, EventStreamId: {2}",
                                                msg.TransactionId, transInfo.TransactionOffset,
                                                transInfo.EventStreamId.IsEmptyString() ? "<null>" : transInfo.EventStreamId));
                    }
                    streamId = transInfo.EventStreamId;
                }

                var result = _readIndex.CheckStreamAccess(streamId, msg.AccessType, msg.User);
                return(new StorageMessage.CheckStreamAccessCompleted(msg.CorrelationId, streamId, msg.TransactionId, msg.AccessType, result));
            }
            catch (Exception exc)
            {
                Log.ErrorException(exc, "Error during processing CheckStreamAccess({0}, {1}) request.", msg.EventStreamId, msg.TransactionId);
                return(new StorageMessage.CheckStreamAccessCompleted(msg.CorrelationId, streamId, msg.TransactionId,
                                                                     msg.AccessType, new StreamAccess(false)));
            }
        }
 void IHandle <StorageMessage.CheckStreamAccess> .Handle(StorageMessage.CheckStreamAccess msg)
 {
     if (msg.Expires < DateTime.Now)
     {
         return;
     }
     msg.Envelope.ReplyWith(CheckStreamAccess(msg));
 }
 void IHandle <StorageMessage.CheckStreamAccess> .Handle(StorageMessage.CheckStreamAccess msg)
 {
     if (msg.Expires < DateTime.UtcNow)
     {
         Log.Debug("Check Stream Access operation has expired for Stream: {0}. Operation Expired at {1}", msg.EventStreamId, msg.Expires);
         return;
     }
     msg.Envelope.ReplyWith(CheckStreamAccess(msg));
 }
Example #5
0
 void IHandle <StorageMessage.CheckStreamAccess> .Handle(StorageMessage.CheckStreamAccess msg)
 {
     msg.Envelope.ReplyWith(CheckStreamAccess(msg));
 }