@Override public Object decode(ByteBuffer bb) { int beginPosition = bb.position(); byte code = bb.get(); int length = (int) EncodingRule.decodeRawNumber(bb); int limit = bb.limit(); bb.limit(bb.position() + length); String name = (String) EncodingRule.decode(bb); String target = (String) EncodingRule.decode(bb); String keyName = (String) EncodingRule.decode(bb); Function func = Function.getFunction(name, target, keyName, Timechart.func); if (typeCode.get(func.getClass()) != code) throw new TypeMismatchException(typeCode.get(func.getClass()), code, beginPosition); if (code == (byte) 128) { ((Function.Average) func).setD((Double) EncodingRule.decode(bb)); ((Function.Average) func).setCount((Integer) EncodingRule.decode(bb)); } else if (code == (byte) 129) { ((Function.Count) func).setResult((Long) EncodingRule.decode(bb)); } else if (code == (byte) 130) { // ((Function.DistinctCount) func).setObjs((List<Object>) // EncodingRule.decode(bb)); } else if (code == (byte) 131) { ((Function.First) func).setFirst(EncodingRule.decode(bb)); } else if (code == (byte) 132) { ((Function.Last) func).setLast(EncodingRule.decode(bb)); } else if (code == (byte) 133) { // ((Function.ValueList) func).setObjs((List<Object>) // EncodingRule.decode(bb)); } else if (code == (byte) 134) { ((Function.Max) func).setMax(EncodingRule.decode(bb)); } else if (code == (byte) 135) { ((Function.Min) func).setMin(EncodingRule.decode(bb)); } else if (code == (byte) 136) { // ((Function.Mode) func).setResult(EncodingRule.decode(bb)); // ((Function.Mode) func).setMaxCount((Integer) // EncodingRule.decode(bb)); // ((Function.Mode) func).setNowCount((Integer) // EncodingRule.decode(bb)); } else if (code == (byte) 137) { ((Function.Range) func).setMax((Number) EncodingRule.decode(bb)); ((Function.Range) func).setMin((Number) EncodingRule.decode(bb)); } else if (code == (byte) 138) { ((Function.Sum) func).setSum((Number) EncodingRule.decode(bb)); } else if (code == (byte) 139) { // ((Function.SumSquare) func).setSum((Number) // EncodingRule.decode(bb)); } else if (code == (byte) 140) { // ((Function.Values) func).setObjs((List<Object>) // EncodingRule.decode(bb)); } else if (code == (byte) 141 || code == (byte) 142 || code == (byte) 143 || code == (byte) 144) { ((Timechart.PerTime) func).setAmount((Long) EncodingRule.decode(bb)); } bb.limit(limit); return func; }