예제 #1
0
        public async Task WriteSnapshots <T>(string bucket, string streamId, ISnapshot snapshot, IDictionary <string, string> commitHeaders) where T : class, IEventSource
        {
            var streamName = _streamGen(typeof(T), StreamTypes.Snapshot, bucket, streamId);

            Logger.Write(LogLevel.Debug, () => $"Writing snapshot to stream [{streamName}]");

            var e = new WritableEvent
            {
                Descriptor = new EventDescriptor
                {
                    EntityType    = typeof(T).AssemblyQualifiedName,
                    StreamType    = StreamTypes.Snapshot,
                    Bucket        = bucket,
                    StreamId      = streamId,
                    Timestamp     = snapshot.Timestamp,
                    Version       = snapshot.Version,
                    Headers       = new Dictionary <string, string>(),
                    CommitHeaders = commitHeaders
                },
                Event = snapshot.Payload,
            };

            Saved.Mark();
            await _store.WriteSnapshot(streamName, e, commitHeaders).ConfigureAwait(false);
        }