private CommitForStorage getCommit(NetMQMessage message) { var context = message.Pop().ConvertToString(); var stream = message.Pop().ConvertToString(); var expectedVersion = message.PopInt64(); var eventCount = message.PopInt32(); var events = new EventForStorage[eventCount]; for (int i = 0; i < eventCount; i++) { var eventId = new Guid(message.Pop().ToByteArray()); var timestamp = message.PopDateTime(); var typeKey = message.PopString(); var headers = message.PopStringOrNull(); var body = message.PopString(); //-1 to override concurrency check. Being lazy and not using a constant. var version = expectedVersion == -1 ? -1 : expectedVersion + i; events[i] = new EventForStorage(eventId, version, timestamp, typeKey, headers, body); } return new CommitForStorage(context, stream, events); }