public IEnumerable<ISourcedEvent> GetAllEvents(Guid id)
        {
            var sourcePath = string.Format("{0}{1}{2}", BasePath, Path.DirectorySeparatorChar, id);

            var tapeStream = new FileTapeStream.FileTapeStream(sourcePath);
            var records = tapeStream.ReadRecords();

            List<ISourcedEvent> events = records.Select(rec => Streamer.DeserializeEvent(rec.Data)).ToList();

            // todo: Add caching

            return events.OrderBy(n => n.EventTimeStamp);
        }
        public IEnumerable <ISourcedEvent> GetAllEvents(Guid id)
        {
            var sourcePath = string.Format("{0}{1}{2}", BasePath, Path.DirectorySeparatorChar, id);

            var tapeStream = new FileTapeStream.FileTapeStream(sourcePath);
            var records    = tapeStream.ReadRecords();

            List <ISourcedEvent> events = records.Select(rec => Streamer.DeserializeEvent(rec.Data)).ToList();

            // todo: Add caching

            return(events.OrderBy(n => n.EventTimeStamp));
        }
        public void Store(UncommittedEventStream eventStream)
        {
            var sourcePath = string.Format("{0}{1}{2}", BasePath, Path.DirectorySeparatorChar, eventStream.SourceId);

            if (!Directory.Exists(BasePath))
            {
                Directory.CreateDirectory(BasePath);
            }

            var tapeStream = new FileTapeStream.FileTapeStream(sourcePath);

            foreach (var record in eventStream.Select(evt => Streamer.SerializeEvent(evt.Payload as ISourcedEvent)))
            {
                tapeStream.Append(record);
            }
        }
        public void AppendAndReadRecordsTest()
        {
            var target = new FileTapeStream.FileTapeStream("test", new FakeTapeStreamSerializer());

            const string expected = "Some test data";

            target.Append(Encoding.ASCII.GetBytes(expected));

            IEnumerable <TapeRecord> records = target.ReadRecords();

            var items = new List <TapeRecord>(records);

            var actual = Encoding.ASCII.GetString(items[0].Data);

            Assert.AreEqual(expected, actual);
        }
        public void AppendAndReadRecordsTest()
        {
            var target = new FileTapeStream.FileTapeStream("test", new FakeTapeStreamSerializer());

            const string expected = "Some test data";

            target.Append(Encoding.ASCII.GetBytes(expected));

            IEnumerable<TapeRecord> records = target.ReadRecords();

            var items = new List<TapeRecord>(records);

            var actual = Encoding.ASCII.GetString(items[0].Data);

            Assert.AreEqual(expected, actual);
        }
        public void Store(UncommittedEventStream eventStream)
        {
            var sourcePath = string.Format("{0}{1}{2}", BasePath, Path.DirectorySeparatorChar, eventStream.SourceId);

            if (!Directory.Exists(BasePath))
            {
                Directory.CreateDirectory(BasePath);
            }

            var tapeStream = new FileTapeStream.FileTapeStream(sourcePath);

            foreach (var record in eventStream.Select(evt => Streamer.SerializeEvent(evt.Payload as ISourcedEvent)))
            {
                tapeStream.Append(record);
            }
        }