public void Process(ClientRequestEventWithPrefetch clientRequestEvent, EffectTracker effects) { if (clientRequestEvent.Phase == ClientRequestEventWithPrefetch.ProcessingPhase.Read) { this.Partition.Assert(!this.PendingPrefetches.ContainsKey(clientRequestEvent.EventIdString)); // Issue a read request that fetches the instance state. // We have to buffer this request in the pending list so we can recover it. this.PendingPrefetches.Add(clientRequestEvent.EventIdString, clientRequestEvent); if (!effects.IsReplaying) { this.Partition.SubmitInternalEvent(new InstanceLookup(clientRequestEvent)); } } else { if (this.PendingPrefetches.Remove(clientRequestEvent.EventIdString)) { if (clientRequestEvent.Phase == ClientRequestEventWithPrefetch.ProcessingPhase.ConfirmAndProcess) { effects.Add(clientRequestEvent.Target); } } } }
public InstanceLookup(ClientRequestEventWithPrefetch clientRequest) { this.request = clientRequest; }