Ejemplo n.º 1
0
    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));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
 internal protected virtual void Handle(Elect elec)
 {
     Logger.Debug($"{StateType} {Node.Id} ELECT: {elec}");
     LiveNodeMaintainer.EscalateElection(elec.Id);
 }
Ejemplo n.º 6
0
 protected internal override void Handle(Elect elec)
 {
     Logger.Debug($"{StateType} {Node.Id} ELECT: {elec}");
     LiveNodeMaintainer.VoteForLocalNode(elec.Id);
 }
Ejemplo n.º 7
0
 public static void MessageToBytes(Elect elect, Stream buffer) => BasicMessageToBytes(elect, OperationalMessage.ELECT, buffer);