Exemple #1
0
 // Token: 0x06002589 RID: 9609 RVA: 0x0042C134 File Offset: 0x0042A334
 public void CheckBuffer()
 {
     if (this.LostInSpace || (this.ConnectTime > 0f && (this.ConnectTime -= NetworkManager.DeltaTime) <= 0f) || (this.LinkTime > 0f && (this.LinkTime -= NetworkManager.DeltaTime) <= 0f))
     {
         GUIManager.Instance.OpenMessageBox(DataManager.Instance.mStringTable.GetStringByID(101u), DataManager.Instance.mStringTable.GetStringByID(274u) + ":" + this.Result, null, null, 0, 0, false, false, false, false, false);
         this.Drop(true);
     }
     else if (this.Connect() && NetworkPeeper.Sucket != null && NetworkPeeper.Sucket.Connected)
     {
         if (this.BeatTime > 0f && (this.BeatTime -= NetworkManager.DeltaTime) <= 0f)
         {
             this.HeartBeat(15L);
         }
         if (NetworkPeeper.Sucket.Poll(0, SelectMode.SelectWrite) && NetworkPeeper.SendBuff.Count > 0)
         {
             NetworkManager.SendSocket((MessagePacket)NetworkPeeper.SendBuff.Peek());
         }
         while (NetworkPeeper.Sucket != null && NetworkPeeper.Sucket.Poll(0, SelectMode.SelectRead))
         {
             if (NetworkPeeper.read_pos >= 4096)
             {
                 if (NetworkPeeper.parse_pos > 0)
                 {
                     Buffer.BlockCopy(NetworkPeeper.ReadData, NetworkPeeper.parse_pos, NetworkPeeper.ReadData, 0, NetworkPeeper.read_pos -= NetworkPeeper.parse_pos);
                 }
                 else
                 {
                     this.Drop(true);
                 }
                 NetworkPeeper.parse_pos = 0;
                 return;
             }
             int num = NetworkPeeper.Sucket.Receive(NetworkPeeper.ReadData, NetworkPeeper.read_pos, NetworkPeeper.ReadData.Length - NetworkPeeper.read_pos, SocketFlags.None, out NetworkManager.SucketError);
             if (num == 0)
             {
                 this.Drop(true);
                 break;
             }
             if (NetworkPeeper.read_pos + num > 4096)
             {
                 break;
             }
             NetworkPeeper.read_pos += num;
             while (NetworkPeeper.read_pos - NetworkPeeper.parse_pos >= 4)
             {
                 ushort num2 = GameConstants.ConvertBytesToUShort(NetworkPeeper.ReadData, NetworkPeeper.parse_pos);
                 if (num2 < 4 || num2 > 4096)
                 {
                     NetworkPeeper.parse_pos += 4;
                 }
                 else
                 {
                     if ((int)num2 > NetworkPeeper.read_pos - NetworkPeeper.parse_pos)
                     {
                         break;
                     }
                     MessagePacket messagePacket = new MessagePacket(ref NetworkPeeper.ReadData, NetworkPeeper.parse_pos + 4, (int)(num2 - 4));
                     messagePacket.Protocol = (Protocol)GameConstants.ConvertBytesToUShort(NetworkPeeper.ReadData, NetworkPeeper.parse_pos + 2);
                     NetworkManager.Cipher(NetworkPeeper.ReadData, messagePacket.Data.GetIndex(0), messagePacket.Length, 0);
                     NetworkPeeper.parse_pos += (int)num2;
                     DispatchManager.GuestDispatcher(messagePacket);
                 }
             }
             if (NetworkPeeper.parse_pos > 0)
             {
                 Buffer.BlockCopy(NetworkPeeper.ReadData, NetworkPeeper.parse_pos, NetworkPeeper.ReadData, 0, NetworkPeeper.read_pos -= NetworkPeeper.parse_pos);
             }
             NetworkPeeper.parse_pos = 0;
         }
     }
 }