private bool ProcessPacketHeader() { try { object customErrorData = null; IPacketHeader packetHeader = m_NetworkChannelHelper.DeserializePacketHeader(m_ReceiveState.Stream, out customErrorData); if (customErrorData != null) { if (NetworkChannelCustomError != null) { NetworkChannelCustomError(this, customErrorData); } } if (packetHeader == null) { string errorMessage = "Packet header is invalid."; if (NetworkChannelError != null) { NetworkChannelError(this, NetworkErrorCode.DeserializePacketHeaderError, errorMessage); return(false); } throw new Exception(errorMessage); } if (packetHeader.PacketLength > 0) { m_ReceiveState.PrepareForPacket(packetHeader.PacketLength); } else { m_ReceiveState.PrepareForPacketHeader(m_NetworkChannelHelper.PacketHeaderLength); } } catch (System.Exception exception) { m_Active = false; if (NetworkChannelError != null) { NetworkChannelError(this, NetworkErrorCode.DeserializePacketHeaderError, exception.ToString()); return(false); } throw; } return(true); }
protected virtual bool ProcessPacketHeader() { try { object customErrorData = null; IPacketHeader packetHeader = m_NetworkChannelHelper.DeserializePacketHeader(m_ReceiveState.Stream, out customErrorData); if (customErrorData != null && NetworkChannelCustomError != null) { NetworkChannelCustomError(this, customErrorData); } if (packetHeader == null) { string errorMessage = "Packet header is invalid."; if (NetworkChannelError != null) { NetworkChannelError(this, NetworkErrorCode.DeserializePacketHeaderError, SocketError.Success, errorMessage); return(false); } throw new GameFrameworkException(errorMessage); } m_ReceiveState.PrepareForPacket(packetHeader); if (packetHeader.PacketLength <= 0) { bool processSuccess = ProcessPacket(); m_ReceivedPacketCount++; return(processSuccess); } } catch (Exception exception) { m_Active = false; if (NetworkChannelError != null) { SocketException socketException = exception as SocketException; NetworkChannelError(this, NetworkErrorCode.DeserializePacketHeaderError, socketException != null ? socketException.SocketErrorCode : SocketError.Success, exception.ToString()); return(false); } throw; } return(true); }