internal void UpdateRequest(NetConnectRequestPacket connRequest) { if (connRequest.ConnectionTime >= ConnectionTime) { ConnectionTime = connRequest.ConnectionTime; ConnectionNumber = connRequest.ConnectionNumber; } }
//"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); }
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); }