void IEventListener <ChunkStateExternal> .OnNotified(IEventSource <ChunkStateExternal> source, ChunkStateExternal evt) { // Unsubscribe from any further events ChunkStateManagerClient stateManager = (ChunkStateManagerClient)source; stateManager.Subscribe(this, evt, false); Assert.IsTrue(evt == ChunkStateExternal.Saved); if (evt == ChunkStateExternal.Saved) { if (!chunksToSave.Contains(stateManager.chunk)) { return; } SaveCompleteForChunk(stateManager.chunk); } }
public SaveProgress(ICollection <Chunk> chunks) { if (chunks.Count <= 0) { progress = 100; return; } chunksToSave.AddRange(chunks); totalChunksToSave = chunksToSave.Count; // Register at each chunk for (int i = 0; i < chunksToSave.Count; i++) { Chunk chunk = chunksToSave[i]; ChunkStateManagerClient stateManager = (ChunkStateManagerClient)chunk.stateManager; stateManager.Subscribe(this, ChunkStateExternal.Saved, true); } }