protected override bool EntryRequestReply(Client client, EntryRequestReply reply) { var entry = _server.PersistedStore.GetEntry(index); if (entry.HasValue && !reply.Entry.HasValue) { //we have more logs Console.WriteLine("{0}: Verify failed at index {1} - we have more logs", _server.Name, index); Console.WriteLine("{0}: Expected {1}", _server.Name, _server.PersistedStore.GetEntry(index)); Console.WriteLine("{0}: Got {1}", _server.Name, reply.Entry); } else if (!entry.HasValue && reply.Entry.HasValue) { //they have more logs Console.WriteLine("{0}: Verify failed at index {1} - they have more logs", _server.Name, index); Console.WriteLine("{0}: Expected {1}", _server.Name, _server.PersistedStore.GetEntry(index)); Console.WriteLine("{0}: Got {1}", _server.Name, reply.Entry); } else if (!entry.HasValue && !entry.HasValue) { //logs matched Console.WriteLine("{0}: logs matched, finished at {1}", _server.Name, index - 2); IsVerified = true; } else { //both have a log, lets compare var left = entry.Value; var right = reply.Entry.Value; if (LogEntry.AreEqual(left, right)) { //Console.WriteLine("{0}: Verified index {1}", _server.Name, index); client.SendEntryRequest(++index); return true; } else { Console.WriteLine("{0}: Verify failed at index {1}", _server.Name, index); Console.WriteLine("{0}: Expected {1}", _server.Name, _server.PersistedStore.GetEntry(index)); Console.WriteLine("{0}: Got {1}", _server.Name, reply.Entry); } } _server.ChangeState(new StoppedState(_server)); return base.EntryRequestReply(client, reply); }
protected virtual bool EntryRequestReply(Client client, EntryRequestReply reply) { return true; }
public bool EntryRequestReply(EntryRequestReply reply) { var client = _server.GetClient(reply.From); return EntryRequestReply(client, reply); }
public void SendEntryRequestReply(uint index) { var _persistedState = _server.PersistedStore; var entry = _persistedState.GetEntry(index); var message = new EntryRequestReply() { From = _server.ID, Entry = entry }; _lastMessage = message; _server.Transport.SendMessage(this, message); }