public IEnumerable<ISourcedEvent> GetAllEventsSinceVersion(Guid id, long version) { FileInfo file = id.GetEventStoreFileInfo(_path); if (!file.Exists || GetVersion(id) <= version) yield break; try { id.GetReadLock(); using (var reader = file.OpenRead()) { var indexBuf = new byte[4]; reader.Seek(GetEventSourceIndexForVersion(id, version), SeekOrigin.Begin); var curVer = version + 1; while (reader.Read(indexBuf, 0, 4) == 4) { var length = BitConverter.ToInt32(indexBuf, 0); var eventBytes = new byte[length]; reader.Read(eventBytes, 0, length); yield return (SourcedEvent)_formatter.Deserialize(eventBytes.ReadStoredEvent(id, curVer++)); } } } finally { id.ReleaseReadLock(); } }
private static string GetSnapshotText(Guid eventSourceId, string path) { try { eventSourceId.GetReadLock("snapshot"); var snapshottext = File.ReadAllText(path); return snapshottext; } finally { eventSourceId.ReleaseReadLock("snapshot"); } }
public CommittedEventStream ReadFrom(Guid id, Type aggregateRootType, long minVersion, long maxVersion) { var events = new List<CommittedEvent>(); FileInfo file = id.GetEventStoreFileInfo(_path); if (!file.Exists || GetVersion(id) <= minVersion) { return new CommittedEventStream(id); } var version = minVersion; if (version < 0) { version = 0; } try { id.GetReadLock(); using (var reader = file.OpenRead()) { var indexBuf = new byte[4]; reader.Seek(GetEventSourceIndexForVersion(id, version), SeekOrigin.Begin); var curVer = version + 1; while ((reader.Read(indexBuf, 0, 4) == 4) && version < maxVersion) { var length = BitConverter.ToInt32(indexBuf, 0); var eventBytes = new byte[length]; reader.Read(eventBytes, 0, length); var evnt = ReadStoredEvent(eventBytes, id, curVer++); events.Add(evnt); } } return new CommittedEventStream(id, events); } finally { id.ReleaseReadLock(); } }