コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        public void Deserialize_obj_null()
        {
            var formatter = new JsonEventFormatter(_typeResolver);
            var ex        = Assert.Throws <ArgumentNullException>(() => formatter.Deserialize(null));

            ex.ParamName.Should().Be("obj");
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
 public void Deserialize_obj_null()
 {
     var formatter = new JsonEventFormatter(_typeResolver);
     var ex = Assert.Throws<ArgumentNullException>(() => formatter.Deserialize(null));
     ex.ParamName.Should().Be("obj");
 }
コード例 #8
0
        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));
        }