public static bool IntepretMessage(ByteArray byteArray, IWorldReportClientService clientService) { byteArray.BypassHeader(); int methodID = byteArray.readInt(); bool mtdrst__ = false; switch (methodID) { case EnumWorldReportMethods.CLIENT_REPORTSTATUS_HASH: byteArray.EncryptKey = EnumWorldReportMethods.CLIENT_REPORTSTATUS_HASH; byteArray.CRC = 0; byteArray.readDynamicsInt(); mtdrst__ = OnReportStatus(byteArray, clientService); byteArray.EncryptKey = 0; return(mtdrst__); case EnumWorldReportMethods.CLIENT_REQUESTERROR_HASH: byteArray.EncryptKey = EnumWorldReportMethods.CLIENT_REQUESTERROR_HASH; byteArray.readDynamicsInt(); OnClientRequestError__(byteArray, clientService); byteArray.EncryptKey = 0; return(true); } if (methodID == EnumWorldReportMethods.CLIENT_REQUESTERROR_HASH) { return(OnClientRequestError__(byteArray, clientService)); } // recover the header byteArray.Rewind(); return(false); }
private static bool OnClientRequestError__(ByteArray byteArray, IWorldReportClientService clientService) { int errorCode = byteArray.readDynamicsInt(); if (ClientRequestErrorHandler__ != null) { ClientRequestErrorHandler__(errorCode); } return(true); }
private static bool OnReportStatus(ByteArray byteArray, IWorldReportClientService clientService) { WorldState status = new WorldState(); status.ReadFromByteArray(byteArray); int crc = byteArray.readIntNCRC(); if (crc == byteArray.CRC) { clientService.OnReportStatus(ref status); } byteArray.Recycle(); return(true); }