protected EventRecord WriteSingleEvent(string eventStreamName, long eventNumber, string data, DateTime?timestamp = null, Guid eventId = default(Guid), bool retryOnFail = false, string eventType = "some-type") { _streamNameIndex.GetOrAddId(eventStreamName, out var eventStreamId, out _, out _); var prepare = LogRecord.SingleWrite(_recordFactory, WriterCheckpoint.ReadNonFlushed(), eventId == default(Guid) ? Guid.NewGuid() : eventId, Guid.NewGuid(), eventStreamId, eventNumber - 1, eventType, Helper.UTF8NoBom.GetBytes(data), null, timestamp); long pos; if (!retryOnFail) { Assert.IsTrue(Writer.Write(prepare, out pos)); } else { long firstPos = prepare.LogPosition; if (!Writer.Write(prepare, out pos)) { prepare = LogRecord.SingleWrite(_recordFactory, pos, prepare.CorrelationId, prepare.EventId, prepare.EventStreamId, prepare.ExpectedVersion, prepare.EventType, prepare.Data, prepare.Metadata, prepare.TimeStamp); if (!Writer.Write(prepare, out pos)) { Assert.Fail("Second write try failed when first writing prepare at {0}, then at {1}.", firstPos, prepare.LogPosition); } } } var commit = LogRecord.Commit(WriterCheckpoint.ReadNonFlushed(), prepare.CorrelationId, prepare.LogPosition, eventNumber); Assert.IsTrue(Writer.Write(commit, out pos)); Assert.AreEqual(eventStreamId, prepare.EventStreamId); var eventRecord = new EventRecord(eventNumber, prepare, eventStreamName); return(eventRecord); }
public bool GetOrAddId(string streamName, out long streamId, out long createdId, out string createdName) { if (SystemStreams.IsMetastream(streamName)) { streamName = SystemStreams.OriginalStreamOf(streamName); var ret = GetOrAddId(streamName, out streamId, out createdId, out createdName); streamId = _metastreams.MetaStreamOf(streamId); return(ret); } if (LogV3SystemStreams.TryGetVirtualStreamId(streamName, out streamId)) { createdId = default; createdName = default; return(true); } return(_wrapped.GetOrAddId(streamName, out streamId, out createdId, out createdName)); }
public bool GetOrAddId(string streamName, out TStreamId streamId, out TStreamId createdId, out string createdName) => _streamNameIndex.GetOrAddId(streamName, out streamId, out createdId, out createdName);