public void Process(ClientRequestEventWithQuery clientRequestEvent, EffectTracker effects) { if (clientRequestEvent.Phase == ClientRequestEventWithQuery.ProcessingPhase.Query) { this.Partition.Assert(!this.PendingQueries.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.PendingQueries.Add(clientRequestEvent.EventIdString, clientRequestEvent); if (!effects.IsReplaying) { this.Partition.SubmitInternalEvent(new InstanceQueryEvent(clientRequestEvent)); } } else { this.Partition.Assert(clientRequestEvent.Phase == ClientRequestEventWithQuery.ProcessingPhase.Confirm); this.PendingQueries.Remove(clientRequestEvent.EventIdString); } }
public InstanceQueryEvent(ClientRequestEventWithQuery clientRequest) { this.request = clientRequest; }