Exemplo n.º 1
0
 protected void SetConnectState(ClientConnectState state)
 {
     mConnectState = state;
     if (IsConnectState(ClientConnectState.Disconnected))
     {
         if (mReconnectTimerId == uint.MaxValue)
         {
             mReconnectTimerId = TimerTaskQueue.AddTimer(1000, mReconnectInterval, StartConnect);
         }
         if (mHeartTimerId != uint.MaxValue)
         {
             TimerTaskQueue.DelTimer(mHeartTimerId);
             mHeartTimerId = uint.MaxValue;
         }
     }
     else if (IsConnectState(ClientConnectState.Connectted))
     {
         if (mReconnectTimerId != uint.MaxValue)
         {
             TimerTaskQueue.DelTimer(mReconnectTimerId);
             mReconnectTimerId = uint.MaxValue;
         }
         if (mHeartTimerId == uint.MaxValue)
         {
             mHeartTimerId = TimerTaskQueue.AddTimer(1000, mHeartbeatInterval, HeartBeat);
         }
         mSendWait.Set();
         mReceiveWait.Set();
     }
 }
Exemplo n.º 2
0
 private void StartConnect()
 {
     if (IsConnectState(ClientConnectState.Disconnected))
     {
         Close();
         mNeedSendMessages.Clear();
         mConnectState = ClientConnectState.Reconnectting;
         Reconnect();
     }
 }
Exemplo n.º 3
0
 public override void Shutdown()
 {
     if (this._state > MPPeer.PeerState.Inited)
     {
         NetworkTransport.RemoveHost(this._hostID);
     }
     NetworkTransport.Shutdown();
     this.ResetServerData();
     this._clientConnectState = ClientConnectState.Idle;
     this._state = MPPeer.PeerState.Unitialized;
 }
Exemplo n.º 4
0
        private void InitMember(string ip, int port)
        {
            isStop = false;
            mIP    = ip;
            GetIP(ip);
            mHead         = new NetworkHeadFormat();
            mContents     = null;
            mPort         = port;
            mConnectState = ClientConnectState.Already;
            NetworkHeadFormat temp = new NetworkHeadFormat();

            temp.mType  = CommandType.HeartCodec;
            mHeartBytes = temp.Merge(null);
        }
Exemplo n.º 5
0
        public override void Connect(string ipAddress, int serverPort)
        {
            byte num;

            if (this._isDelaySimulator)
            {
                this._hostID     = NetworkTransport.AddHostWithSimulator(this._ht, 0x3e8, 0x5dc);
                this._selfConnID = NetworkTransport.ConnectWithSimulator(this._hostID, ipAddress, serverPort, 0, out num, this._simulatorConfig);
            }
            else
            {
                this._hostID     = NetworkTransport.AddHost(this._ht);
                this._selfConnID = NetworkTransport.Connect(this._hostID, ipAddress, serverPort, 0, out num);
            }
            if (num != 0)
            {
                throw new UnityException("bad connection : " + ((NetworkError)num));
            }
            this._state = MPPeer.PeerState.ClientConnecting;
            this._clientConnectState = ClientConnectState.Idle;
        }
Exemplo n.º 6
0
        public override void Core()
        {
            if (this._state > MPPeer.PeerState.Inited)
            {
                NetworkEventType dataEvent = NetworkEventType.DataEvent;
                while ((dataEvent != NetworkEventType.Nothing) && (this._state > MPPeer.PeerState.Inited))
                {
                    bool flag;
                    int  num2;
                    dataEvent = NetworkTransport.ReceiveFromHost(this._hostID, out this._recvConnID, out this._recvChannelID, this._recvBuffer, this._recvBuffer.Length, out this._recvDataSize, out this._recvErr);
                    if (this._state != MPPeer.PeerState.ServerListening)
                    {
                        goto Label_0167;
                    }
                    switch (dataEvent)
                    {
                    case NetworkEventType.DataEvent:
                    {
                        this.ServerDispatchDataEvent(dataEvent);
                        continue;
                    }

                    case NetworkEventType.ConnectEvent:
                    {
                        this.CheckNetError(this._recvErr, dataEvent);
                        this._serverConnectedPeerCount++;
                        byte index = (byte)(this._peerID + this._serverConnectedPeerCount);
                        this._peerMap[index] = this._recvConnID;
                        this._selfBuffer[0]  = base.PackHeader(index, 1);
                        this._selfBuffer[1]  = index;
                        this.SendTo(this._recvConnID, 0, this._selfBuffer, 2);
                        if (base.onConnected != null)
                        {
                            base.onConnected(index);
                        }
                        continue;
                    }

                    case NetworkEventType.DisconnectEvent:
                        flag = false;
                        num2 = 2;
                        goto Label_0143;

                    default:
                    {
                        continue;
                    }
                    }
Label_00F7:
                    if ((this._peerMap[num2] != -1) && (this._peerMap[num2] == this._recvConnID))
                    {
                        this._peerMap[num2] = -1;
                        if (base.onDisconnected != null)
                        {
                            base.onDisconnected(num2);
                        }
                        flag = true;
                        continue;
                    }
                    num2++;
Label_0143:
                    if (num2 <= (1 + this._serverConnectedPeerCount))
                    {
                        goto Label_00F7;
                    }
                    continue;
Label_0167:
                    if (this._state == MPPeer.PeerState.ClientConnecting)
                    {
                        if (this._clientConnectState == ClientConnectState.Idle)
                        {
                            if (dataEvent == NetworkEventType.ConnectEvent)
                            {
                                this.CheckNetError(this._recvErr, dataEvent);
                                this._clientConnectState = ClientConnectState.JustConnectedWaitingForSetClientID;
                            }
                            else if (dataEvent == NetworkEventType.DataEvent)
                            {
                                Debug.LogError("not expecting data event before peer ID is set");
                            }
                        }
                        else if ((this._clientConnectState == ClientConnectState.JustConnectedWaitingForSetClientID) && (dataEvent == NetworkEventType.DataEvent))
                        {
                            this.CheckNetError(this._recvErr, dataEvent);
                            int num3 = base.ParseMessageType(this._recvBuffer);
                            int num4 = base.ParsePeerID(this._recvBuffer);
                            this._peerID             = num4;
                            this._state              = MPPeer.PeerState.ClientConnected;
                            this._clientConnectState = ClientConnectState.ConnectedAndGotClientID;
                            if (base.onConnected != null)
                            {
                                base.onConnected(this._selfConnID);
                            }
                        }
                    }
                    else
                    {
                        if (this._state != MPPeer.PeerState.ClientConnected)
                        {
                            goto Label_02FE;
                        }
                        switch (dataEvent)
                        {
                        case NetworkEventType.DataEvent:
                        {
                            int num5 = base.ParseMessageType(this._recvBuffer);
                            this.CheckNetError(this._recvErr, dataEvent);
                            if (num5 != 2)
                            {
                                goto Label_02C7;
                            }
                            this._totalPeerCount = this._recvBuffer[1];
                            this._state          = MPPeer.PeerState.Established;
                            if (base.onEstablished != null)
                            {
                                base.onEstablished();
                            }
                            break;
                        }

                        case NetworkEventType.DisconnectEvent:
                            if (base.onDisconnected != null)
                            {
                                base.onDisconnected(this._selfConnID);
                            }
                            this._state = MPPeer.PeerState.ClientDropped;
                            break;
                        }
                    }
                    continue;
Label_02C7:
                    if (base.onPacket != null)
                    {
                        base.onPacket(this._recvBuffer, this._recvDataSize - 1, 1, this._recvChannelID % 2);
                    }
                    continue;
Label_02FE:
                    if (this._state == MPPeer.PeerState.Established)
                    {
                        if (this.isServer)
                        {
                            switch (dataEvent)
                            {
                            case NetworkEventType.DataEvent:
                            {
                                this.ServerDispatchDataEvent(dataEvent);
                                continue;
                            }

                            case NetworkEventType.Nothing:
                            {
                                continue;
                            }
                            }
                            continue;
                        }
                        switch (dataEvent)
                        {
                        case NetworkEventType.DataEvent:
                        {
                            this.CheckNetError(this._recvErr, dataEvent);
                            if (base.onPacket != null)
                            {
                                base.onPacket(this._recvBuffer, this._recvDataSize - 1, 1, this._recvChannelID % 2);
                            }
                            continue;
                        }

                        case NetworkEventType.Nothing:
                        {
                            continue;
                        }
                        }
                    }
                }
            }
        }
Exemplo n.º 7
0
 private bool IsConnectState(ClientConnectState state)
 {
     return(mConnectState == state);
 }