SendReady() public method

public SendReady ( ) : void
return void
Exemplo n.º 1
0
        /*	internal void ProcessPongMessage (Node messageFrom, ulong timestamp)
         *      {*/
        //TODO: Pinging/ponging is a total mess

        /*	if (timestamp == messageFrom.TimeOfLastPing) {
         *              messageFrom.PingTime = DateTime.Now.Subtract(messageFrom.TimeOfLastPing).Milliseconds;
         *              messageFrom.RaisePongReceived(messageFrom.PingTime);
         *              //messageFrom.TimeOfLastPing = null;
         *      } else {
         *              // TODO: Do something?
         *      }*/
        // }

        /*
         * internal void ProcessAuthMessage (LocalNodeConnection connection, Node messageFrom, AuthInfo info)
         * {
         *      ProcessAuthMessage (connection, messageFrom, info, false);
         * }
         */

        internal void ProcessAuthMessage(LocalNodeConnection connection, Node messageFrom, AuthInfo c, bool isReply)
        {
            // Some checks:

            // XXX: Isn't this checked elsewhere?
            if (c.NetworkName != network.NetworkName)
            {
                InvalidNetworkNameError error = new InvalidNetworkNameError(c.NetworkName, network.NetworkName);
                network.SendCriticalError(messageFrom, error);
                throw error.ToException();
            }

            if (c.ProtocolVersion != Core.ProtocolVersion)
            {
                VersionMismatchError e = new VersionMismatchError(c.ProtocolVersion.ToString());
                network.SendCriticalError(messageFrom, e);
                throw new VersionMismatchError().ToException();
            }

            // Update node details:
            Node node = network.Nodes[messageFrom.NodeID];

            node.NickName = c.NickName;

            if (isReply == false)
            {
                connection.ConnectionState = ConnectionState.Authenticating;
                network.SendAuthReply(connection, messageFrom);
            }
            else
            {
                connection.SendReady();
            }
        }
Exemplo n.º 2
0
        internal void ProcessReadyMessage(LocalNodeConnection connection, Node messageFrom)
        {
            if (connection.ConnectionState != ConnectionState.Ready)
            {
                connection.NodeRemote.RemotelyUntrusted = false;
                connection.ConnectionState = ConnectionState.Ready;
                connection.RaiseConnectionReady();
                connection.RemoteNodeInfo.LastConnected = DateTime.Now;
                Core.Settings.SyncNetworkInfoAndSave();

                if (connection.ReadySent == false)
                {
                    connection.SendReady();
                }

                if (messageFrom.FinishedKeyExchange == false &&
                    messageFrom.SentKeyExchange == false)
                {
                    messageFrom.CreateNewSessionKey();
                }

                // The network needs to know about me this new connection,
                // any nodes I know about, memos, etc... so say hi to
                // everyone and let them know everything that I know.
                Message message = network.MessageBuilder.CreateHelloMessage();
                message.To = Network.BroadcastNodeID;
                network.SendBroadcast(message);
            }
            else
            {
                // XXX: Do we need this?
                if (connection.ReadySent == false)
                {
                    connection.SendReady();
                }
            }
        }
Exemplo n.º 3
0
        /*	internal void ProcessPongMessage (Node messageFrom, ulong timestamp)
        {*/
        //TODO: Pinging/ponging is a total mess
        /*	if (timestamp == messageFrom.TimeOfLastPing) {
                messageFrom.PingTime = DateTime.Now.Subtract(messageFrom.TimeOfLastPing).Milliseconds;
                messageFrom.RaisePongReceived(messageFrom.PingTime);
                //messageFrom.TimeOfLastPing = null;
            } else {
                // TODO: Do something?
            }*/
        // }
        /*
        internal void ProcessAuthMessage (LocalNodeConnection connection, Node messageFrom, AuthInfo info)
        {
            ProcessAuthMessage (connection, messageFrom, info, false);
        }
        */
        internal void ProcessAuthMessage(LocalNodeConnection connection, Node messageFrom, AuthInfo c, bool isReply)
        {
            // Some checks:

            // XXX: Isn't this checked elsewhere?
            if (c.NetworkName != network.NetworkName) {
                InvalidNetworkNameError error = new InvalidNetworkNameError(c.NetworkName, network.NetworkName);
                network.SendCriticalError (messageFrom, error);
                throw error.ToException();
            }

            if (c.ProtocolVersion != Core.ProtocolVersion) {
                VersionMismatchError e = new VersionMismatchError (c.ProtocolVersion.ToString());
                network.SendCriticalError (messageFrom, e);
                throw new VersionMismatchError().ToException();
            }

            // Update node details:
            Node node = network.Nodes[messageFrom.NodeID];
            node.NickName = c.NickName;

            if (isReply == false) {
                connection.ConnectionState = ConnectionState.Authenticating;
                network.SendAuthReply (connection, messageFrom);
            } else {
                connection.SendReady ();
            }
        }
Exemplo n.º 4
0
        internal void ProcessReadyMessage(LocalNodeConnection connection, Node messageFrom)
        {
            if (connection.ConnectionState != ConnectionState.Ready) {
                connection.NodeRemote.RemotelyUntrusted = false;
                connection.ConnectionState = ConnectionState.Ready;
                connection.RaiseConnectionReady();
                connection.RemoteNodeInfo.LastConnected = DateTime.Now;
                Core.Settings.SyncNetworkInfoAndSave();

                if (connection.ReadySent == false) {
                    connection.SendReady();
                }

                if (messageFrom.FinishedKeyExchange == false &&
                    messageFrom.SentKeyExchange == false) {
                    messageFrom.CreateNewSessionKey();
                }

                // The network needs to know about me this new connection,
                // any nodes I know about, memos, etc... so say hi to
                // everyone and let them know everything that I know.
                Message message = network.MessageBuilder.CreateHelloMessage ();
                message.To = Network.BroadcastNodeID;
                network.SendBroadcast (message);

            } else {
                // XXX: Do we need this?
                if (connection.ReadySent == false) {
                    connection.SendReady();
                }
            }
        }