Example #1
0
        public void TokenMessage(Messages.TokenMessage msg)
        {
            lock ( m_tokenLock )
            {
                var nodeDesc = m_configuration.FindNode(msg.senderId);

                if (m_token != null)
                {
                    LogMessage(this, "Duplicate tokend received from node [" + nodeDesc.NodeID + "] " + nodeDesc.NodeIP + " Port: " + nodeDesc.Port);

                    // @todo: Hmmm, consider merging tokens.
                    return;
                }

                LogMessage(this, "Tokend received from node [" + nodeDesc.NodeID + "] " + nodeDesc.NodeIP + " Port: " + nodeDesc.Port);

                m_token = msg.value;
                ReleaseSemaphore();
            }
        }
Example #2
0
        public void             ElectionBroadcast(Messages.ElectionBroadcast election)
        {
            if (election.senderId < m_configuration.NodeID)
            {
                if (m_oks == null)
                {
                    StartElection();
                    LogMessage(this, "Election broadcast from [" + election.senderId + "]. Broadcasting number.");
                }
                else
                {
                    LogMessage(this, "Election broadcast from [" + election.senderId + "]. Broadcast already sent.");
                }
            }
            else if (election.senderId > m_configuration.NodeID)
            {
                if (!NoElectionResponse)
                {
                    Messages.ElectionOk ok = new Messages.ElectionOk(m_configuration.NodeID);

                    var senderDesc = m_configuration.FindNode(election.senderId);
                    Send(ok, senderDesc.Port, senderDesc.NodeIP);

                    LogMessage(this, "Election broadcast from [" + election.senderId + "]. Sending OK.");
                }
                else
                {
                    LogMessage(this, "ElectionOk to: [" + election.senderId + "] intentionally not send. Check Menu -> Debug -> No election response");
                }

                // Don't take part in election anymore.
                m_electionOkTimeout.Stop();
            }
            else
            {
                LogMessage(this, "Duplicate node with the same id in network");
            }
        }