Example #1
0
        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);
            }
        }
Example #2
0
 public InstanceQueryEvent(ClientRequestEventWithQuery clientRequest)
 {
     this.request = clientRequest;
 }