public static HydratableGraveyard Restore(GraveyardMemento memento, HydratableGraveyard hydratable = null) { if (hydratable == null) { return(new HydratableGraveyard(memento)); } hydratable.RestoreMemento(memento); return(hydratable); }
public HydratableGraveyard(GraveyardMemento graveyard = null, int capacity = 1024 * 1024) { this.Key = "/internal/graveyard"; this.PendingMessages = new object[0]; this.capacity = capacity; var keys = graveyard == null ? new string[0] : graveyard.Keys; this.graveyard = new HashSet <string>(keys); this.window = new Queue <string>(this.graveyard); }
private void RestoreMemento(GraveyardMemento memento) { memento = memento ?? new GraveyardMemento(new string[0]); var keys = memento.Keys; this.graveyard.Clear(); this.window.Clear(); for (var i = 0; i < keys.Length; i++) { this.Bury(keys[i]); } }