private GameRecord extractGameRecord(ProcessorContext context, DataInputStream dis) throws IOException { int accountId = dis.readInt(); int productId = dis.readInt(); context.setProductId(productId); int recordId = dis.readInt(); int playDuration = dis.readInt(); int scores = dis.readInt(); String remark = dis.readUTF(); int dataLen = dis.readInt(); byte[] data = null; if (dataLen > 0) { data = new byte[dataLen]; int readLen = 0; int curReadLen = 0; while (readLen < data.length) { curReadLen = dis.read(data, readLen, data.length - readLen); if (curReadLen > 0) { readLen += curReadLen; } } } GameRecord record = new GameRecord(); record.setAccountId(accountId); record.setRecordId(recordId); record.setPlayDuration(playDuration); record.setScores(scores); record.setRemark(remark); record.setTime(new java.util.Date()); record.setData(data); return record; }