private void Dispatch(BootstrapInfo info, IRingBuffer <JournalItem> journalRing, JournaledMessage message) { if (message.Sequence <= info.DispatchSequence) { return; // already dispatched } if (message.ForeignId != Guid.Empty) { return; // only re-dispatch messages which originated here } if (this.internalTypes.Contains(message.SerializedType)) { return; } var next = journalRing.Next(); var claimed = journalRing[next]; claimed.AsBootstrappedDispatchMessage(message.Sequence, message.SerializedBody, message.SerializedType, message.SerializedHeaders); journalRing.Publish(next); }
private static bool Replay(BootstrapInfo info, IRingBuffer <TransformationItem> transformRing, JournaledMessage message) { if (message.Sequence <= info.SnapshotSequence) { return(false); } var next = transformRing.Next(); var claimed = transformRing[next]; claimed.AsJournaledMessage(message.Sequence, message.SerializedBody, message.SerializedType, message.SerializedHeaders); transformRing.Publish(next); return(true); }