public static OperationalMessage?MessageFrom(string content) { if (content.StartsWith(APP)) { return(ApplicationSays.From(content)); } if (content.StartsWith(DIR)) { return(Directory.From(content)); } if (content.StartsWith(ELECT)) { return(Elect.From(content)); } if (content.StartsWith(JOIN)) { return(Join.From(content)); } if (content.StartsWith(LEADER)) { return(Leader.From(content)); } if (content.StartsWith(LEAVE)) { return(Leave.From(content)); } if (content.StartsWith(PING)) { return(Ping.From(content)); } if (content.StartsWith(PULSE)) { return(Pulse.From(content)); } if (content.StartsWith(SPLIT)) { return(Split.From(content)); } if (content.StartsWith(VOTE)) { return(Vote.From(content)); } return(null); }
public void TestGenerateElectMessage() { var elect = new Elect(Id.Of(1)); MessageConverters.MessageToBytes(elect, _messageBuffer); var raw = OperationalMessage.ELECT + "\nid=1"; _expectedBuffer.Write(Converters.TextToBytes(raw)); Assert.Equal(_expectedBuffer.ToArray(), _messageBuffer.ToArray()); Assert.Equal(elect, Elect.From(raw)); }
private Message ProcessElect(Elect message) { switch (message.ElectType) { case ElectType.GET_MASTER: message.NewMasterURL = MasterEndpointURL; return(message); case ElectType.SET_MASTER: MasterEndpointURL = message.NewMasterURL; return(message); } throw new NotImplementedException(); }
public void TestParseElect() { var elect1 = OperationalMessage.MessageFrom(OperationalMessage.ELECT + "\n" + "id=1"); Assert.True(elect1.IsElect); Assert.Equal(Id.Of(1), elect1.Id); var expectedElec1 = new Elect(Id.Of(1)); Assert.Equal(expectedElec1, elect1); var elect100 = OperationalMessage.MessageFrom(OperationalMessage.ELECT + "\n" + "id=100"); Assert.True(elect100.IsElect); Assert.Equal(Id.Of(100), elect100.Id); var expectedElec100 = new Elect(Id.Of(100)); Assert.Equal(expectedElec100, elect100); }
internal protected virtual void Handle(Elect elec) { Logger.Debug($"{StateType} {Node.Id} ELECT: {elec}"); LiveNodeMaintainer.EscalateElection(elec.Id); }
protected internal override void Handle(Elect elec) { Logger.Debug($"{StateType} {Node.Id} ELECT: {elec}"); LiveNodeMaintainer.VoteForLocalNode(elec.Id); }
public static void MessageToBytes(Elect elect, Stream buffer) => BasicMessageToBytes(elect, OperationalMessage.ELECT, buffer);