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(); } }
public void Deserialize() { var formatter = new JsonEventFormatter(_typeResolver); var obj = new StoredEvent <JObject>( eventName: "bob", eventVersion: new Version(3, 0) /* different on purpose */, eventIdentifier: new Guid("402639D5-4106-4AE7-B210-45780C7A08F3"), eventSourceId: new Guid("697BAB3C-E122-4C70-85B0-76750BC2D878"), eventSequence: 1, eventTimeStamp: new DateTime(2001, 4, 12, 12, 52, 21, 425, DateTimeKind.Utc), data: new JObject( new JProperty("Name", "Alice"), new JProperty("Value", 10), new JProperty("Day", new DateTime(2000, 01, 01)) ) ); var rawResult = formatter.Deserialize(obj); rawResult.Should().BeOfType <AnEvent>(); var result = (AnEvent)rawResult; result.EventIdentifier.Should().Be(obj.EventIdentifier); result.EventSourceId.Should().Be(obj.EventSourceId); result.EventSequence.Should().Be(obj.EventSequence); result.EventTimeStamp.Should().Be(obj.EventTimeStamp); result.EventVersion.Should().Be(new Version(2, 0)); result.Name.Should().Be("Alice"); result.Value.Should().Be(10); result.Day.Should().Be(new DateTime(2000, 01, 01)); }
public void Deserialize_obj_null() { var formatter = new JsonEventFormatter(_typeResolver); var ex = Assert.Throws <ArgumentNullException>(() => formatter.Deserialize(null)); ex.ParamName.Should().Be("obj"); }
public void Deserialize() { var formatter = new JsonEventFormatter(_typeResolver); var obj = new StoredEvent<JObject>( eventName: "bob", eventVersion: new Version(3, 0) /* different on purpose */, eventIdentifier: new Guid("402639D5-4106-4AE7-B210-45780C7A08F3"), eventSourceId: new Guid("697BAB3C-E122-4C70-85B0-76750BC2D878"), eventSequence: 1, eventTimeStamp: new DateTime(2001, 4, 12, 12, 52, 21, 425, DateTimeKind.Utc), data: new JObject( new JProperty("Name", "Alice"), new JProperty("Value", 10), new JProperty("Day", new DateTime(2000, 01, 01)) ) ); var rawResult = formatter.Deserialize(obj); rawResult.Should().BeOfType<AnEvent>(); var result = (AnEvent) rawResult; result.EventIdentifier.Should().Be(obj.EventIdentifier); result.EventSourceId.Should().Be(obj.EventSourceId); result.EventSequence.Should().Be(obj.EventSequence); result.EventTimeStamp.Should().Be(obj.EventTimeStamp); result.EventVersion.Should().Be(new Version(2, 0)); result.Name.Should().Be("Alice"); result.Value.Should().Be(10); result.Day.Should().Be(new DateTime(2000, 01, 01)); }
public void Deserialize() { var formatter = new JsonEventFormatter(_typeResolver); var obj = new JObject( new JProperty("Name", "Alice"), new JProperty("Value", 10), new JProperty("Day", new DateTime(2000, 01, 01)) ); var rawResult = formatter.Deserialize(obj, "bob"); rawResult.Should().BeOfType<AnEvent>(); var result = (AnEvent) rawResult; result.Name.Should().Be("Alice"); result.Value.Should().Be(10); result.Day.Should().Be(new DateTime(2000, 01, 01)); }
public void Deserialize() { var formatter = new JsonEventFormatter(_typeResolver); var obj = new JObject( new JProperty("Name", "Alice"), new JProperty("Value", 10), new JProperty("Day", new DateTime(2000, 01, 01)) ); var rawResult = formatter.Deserialize(obj, "bob"); rawResult.Should().BeOfType <AnEvent>(); var result = (AnEvent)rawResult; result.Name.Should().Be("Alice"); result.Value.Should().Be(10); result.Day.Should().Be(new DateTime(2000, 01, 01)); }
public void Deserialize_obj_null() { var formatter = new JsonEventFormatter(_typeResolver); var ex = Assert.Throws<ArgumentNullException>(() => formatter.Deserialize(null)); ex.ParamName.Should().Be("obj"); }
public CommittedEvent ReadStoredEvent(byte[] eventBytes, Guid id, long version) { var input = new MemoryStream(eventBytes); var reader = new BinaryReader(input); var commitId = new Guid(reader.ReadBytes(16)); var eventIdentifier = new Guid(reader.ReadBytes(16)); var sequence = reader.ReadInt64(); var timeStamp = new DateTime(reader.ReadInt64()); var eventName = reader.ReadString(); var eventVersion = new Version(reader.ReadString()); var bsonReader = new BsonReader(input); var serializedPayload = JObject.Load(bsonReader); return(new CommittedEvent(commitId, eventIdentifier, id, sequence, timeStamp, _formatter.Deserialize(serializedPayload, eventName), eventVersion)); }