public Jankiel(int index, List <Location> listLocation)
        {
            numberRound   = 0;
            statesMessage = StatesMessage.ChangeNumbers;

            indexJankiel  = index;
            numberJankiel = indexJankiel;
            location      = listLocation[indexJankiel];

            SearchForNeighboursList(listLocation);


            thread = new Thread(() => Thread_DoWork());
        }
        private void DoAlgorithm()
        {
            SendMessageNumberToNeigbours();
            ReceiveMessagesNumber();



            while (!isLeader)
            {
                statesMessage        = StatesMessage.SendingLeaders;
                wasLeaderMessage     = false;
                countLeaderNeigbours = 0;

                isLeader = CheckIfIsLeader();
                if (isLeader)
                {
                    SendLeaderMessage();
                    ReceiveMessageToWaitForOthersToFinishRound();
                }
                else
                {
                    ReceiveMessages();
                }

                if (isLeader)
                {
                    statesMessage = StatesMessage.Playing;
                    PlayConcert();
                }
                else
                {
                    statesMessage = StatesMessage.Listening;
                    WaitForFinishRoundMessageFromLeaders();
                }


                Console.WriteLine($"Jankiel {indexJankiel} isLeader = {isLeader} round = {numberRound}");
                numberRound++;
            }
            Console.WriteLine($"Jankiel {indexJankiel} has Finished!");
        }
 public NotThreatenToBeLeaderMessage(string _message, int _indexNotThreaten, int _numberRound, StatesMessage _statesMessage) : base(_message, _numberRound, _statesMessage)
 {
     indexNotThreaten = _indexNotThreaten;
 }
 public NullMessage(int _numberRound, StatesMessage _statesMessage) : base("", _numberRound, _statesMessage)
 {
 }
 public ExchangeNumbersMessage(string _message, int _number, int _index, int _numberRound, StatesMessage _statesMessage) : base(_message, _numberRound, _statesMessage)
 {
     index = _index; number = _number;
 }
 public Message(string _message, int _numberRound, StatesMessage _statesMessage)
 {
     statesMessage = _statesMessage;
     message       = _message;
     numberRound   = _numberRound;
 }
 public LeaderMessage(string _message, int _indexLeader, int _numberRound, StatesMessage _statesMessage) : base(_message, _numberRound, _statesMessage)
 {
     indexLeader = _indexLeader;
 }