// 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; } } }