예제 #1
0
  @Override
  public int lengthOf(Object value) {
    Byte code = typeCode.get(value.getClass());
    if (code == null) throw new UnsupportedTypeException(value.toString());

    List<Object> datas = getDatas(code, (Function) value);
    int contentLength = 0;
    for (Object data : datas) {
      if (data instanceof String)
        contentLength += EncodedStringCache.getEncodedString((String) data).length();
      else contentLength += EncodingRule.lengthOf(data);
    }

    return 1 + EncodingRule.lengthOfRawNumber(int.class, contentLength) + contentLength;
  }