public IEnumerable <StoreRecord> EnumerateMessages(string key, long version, int count) { var records = _appendOnlyStore.ReadRecords(key, version, count); foreach (var record in records) { using (var mem = new MemoryStream(record.Data)) { // drop attributes var attribs = _serializer.ReadAttributes(mem); var eventCount = _serializer.ReadCompactInt(mem); var objects = new object[eventCount]; for (int i = 0; i < eventCount; i++) { objects[i] = _serializer.ReadMessage(mem); } yield return(new StoreRecord(key, objects, record.StoreVersion, record.StreamVersion)); } } }
public ImmutableEnvelope ReadAsEnvelopeData(byte[] buffer) { using (var mem = new MemoryStream(buffer)) { var signature = MessageSerializer.ReadCompactInt(mem); if (Signature != signature) { throw new IOException("Signature bytes mismatch in envelope"); } var frame = StorageFramesEvil.ReadFrame(mem); using (var mem1 = new MemoryStream(frame.Bytes)) { var attributes = MessageSerializer.ReadAttributes(mem1); var item = MessageSerializer.ReadMessage(mem1); var created = new DateTime(frame.Stamp, DateTimeKind.Utc); return(new ImmutableEnvelope(frame.Name, created, item, attributes)); } } }