private void HandleReplica() { this.PendingWriteReq = (this.ReceivedEvent as Coordinator.ReqReplica).PendingWriteReq; this.Assert(this.PendingWriteReq.SeqNum > this.LastSeqNum); if (this.Random()) { this.Send(this.Coordinator, new RespReplicaCommit(this.PendingWriteReq.SeqNum)); } else { this.Send(this.Coordinator, new RespReplicaAbort(this.PendingWriteReq.SeqNum)); } }
public WriteReq(PendingWriteRequest req) : base() { this.PendingWriteReq = req; }
public ReqReplica(PendingWriteRequest req) : base() { this.PendingWriteReq = req; }
void DoWrite() { this.PendingWriteReq = (this.ReceivedEvent as Client.WriteReq).PendingWriteReq; this.CurrSeqNum++; for (int i = 0; i < this.Replicas.Count; i++) { this.Send(this.Replicas[i], new ReqReplica(new PendingWriteRequest(this.CurrSeqNum, this.PendingWriteReq.Idx, this.PendingWriteReq.Val))); } this.Send(this.Timer, new Timer.StartTimer(100)); this.Raise(new Unit()); }