Пример #1
0
 internal void UpdateRequest(NetConnectRequestPacket connRequest)
 {
     if (connRequest.ConnectionTime >= ConnectionTime)
     {
         ConnectionTime   = connRequest.ConnectionTime;
         ConnectionNumber = connRequest.ConnectionNumber;
     }
 }
Пример #2
0
        //"Connect to" constructor
        internal NetPeer(NetManager netManager, IPEndPoint remoteEndPoint, int id, byte connectNum, NetDataWriter connectData)
            : this(netManager, remoteEndPoint, id)
        {
            _connectTime     = DateTime.UtcNow.Ticks;
            _connectionState = ConnectionState.Outgoing;
            ConnectionNum    = connectNum;

            //Make initial packet
            _connectRequestPacket = NetConnectRequestPacket.Make(connectData, _connectTime);
            _connectRequestPacket.ConnectionNumber = connectNum;

            //Send request
            NetManager.SendRaw(_connectRequestPacket, EndPoint);

            NetDebug.Write(NetLogLevel.Trace, "[CC] ConnectId: {0}, ConnectNum: {1}", _connectTime, connectNum);
        }
Пример #3
0
        internal ConnectRequestResult ProcessConnectRequest(NetConnectRequestPacket connRequest)
        {
            //current or new request
            switch (_connectionState)
            {
            //P2P case or just ID update
            case ConnectionState.Outgoing:
                //change connect id if newer
                if (connRequest.ConnectionTime >= _connectTime)
                {
                    //Change connect id
                    _connectTime  = connRequest.ConnectionTime;
                    ConnectionNum = connRequest.ConnectionNumber;
                }
                return(ConnectRequestResult.P2PConnection);

            case ConnectionState.Connected:
                //Old connect request
                if (connRequest.ConnectionTime == _connectTime)
                {
                    //just reply accept
                    NetManager.SendRaw(_connectAcceptPacket, EndPoint);
                }
                //New connect request
                else if (connRequest.ConnectionTime > _connectTime)
                {
                    return(ConnectRequestResult.Reconnection);
                }
                break;

            case ConnectionState.Disconnected:
            case ConnectionState.ShutdownRequested:
                if (connRequest.ConnectionTime >= _connectTime)
                {
                    return(ConnectRequestResult.NewConnection);
                }
                break;
            }
            return(ConnectRequestResult.None);
        }