com.google.protobuf.CodedOutputStream# computeUInt32Size ( ) 源码实例Demo

下面列出了com.google.protobuf.CodedOutputStream# computeUInt32Size ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: trekarta   文件: TrackManager.java

public int getSerializedPropertiesSize(Track track) {
    int size = 0;
    size += CodedOutputStream.computeStringSize(FIELD_NAME, track.name);
    size += CodedOutputStream.computeUInt32Size(FIELD_COLOR, track.style.color);
    size += CodedOutputStream.computeFloatSize(FIELD_WIDTH, track.style.width);
    return size;
}
 
源代码2 项目: jprotobuf   文件: ReflectiveCodec.java

private int computeSize(FieldInfo fieldInfo, Object value) throws IOException {
	FieldType fieldType = fieldInfo.getFieldType();

	int size = 0;
	if (value instanceof List) {
		// if list
		size = CodedConstant.computeListSize(fieldInfo.getOrder(), (List) value, fieldInfo.getFieldType(), true, null);
		return size;
	}

	int order = fieldInfo.getOrder();
	switch (fieldType) {
	case DOUBLE:
		size = CodedOutputStream.computeDoubleSize(order, (Double) value);
		break;
	case BYTES:
		ByteString bytes = ByteString.copyFrom((byte[]) value);
		size = CodedOutputStream.computeBytesSize(order, bytes);
		break;
	case STRING:
		ByteString string = ByteString.copyFromUtf8(value.toString());
		size = CodedOutputStream.computeBytesSize(order, string);
		break;
	case BOOL:
		size = CodedOutputStream.computeBoolSize(order, (Boolean) value);
		break;
	case FIXED32:
		size = CodedOutputStream.computeFixed32Size(order, (Integer) value);
		break;
	case SFIXED32:
		size = CodedOutputStream.computeSFixed32Size(order, (Integer) value);
		break;
	case SINT32:
		size = CodedOutputStream.computeSInt32Size(order, (Integer) value);
		break;
	case INT32:
		size = CodedOutputStream.computeInt32Size(order, (Integer) value);
		break;
	case UINT32:
		size = CodedOutputStream.computeUInt32Size(order, (Integer) value);
		break;
	case FIXED64:
		size = CodedOutputStream.computeFixed64Size(order, (Long) value);
		break;
	case SFIXED64:
		size = CodedOutputStream.computeSFixed64Size(order, (Long) value);
		break;
	case SINT64:
		size = CodedOutputStream.computeSInt64Size(order, (Long) value);
		break;
	case INT64:
		size = CodedOutputStream.computeInt64Size(order, (Long) value);
		break;
	case UINT64:
		size = CodedOutputStream.computeUInt64Size(order, (Long) value);
		break;
	case ENUM:
		int i;
		i = getEnumValue(value);
		size = CodedOutputStream.computeEnumSize(order, i);
		break;
	case FLOAT:
		size = CodedOutputStream.computeFloatSize(order, (Float) value);
		break;
	case OBJECT:
		Class c = value.getClass();
		ReflectiveCodec codec = new ReflectiveCodec(c);
		
		int objectSize = codec.size(value);
		
		size = size + CodedOutputStream.computeRawVarint32Size(objectSize);
		size = size + CodedOutputStream.computeTagSize(order);
		
		size += objectSize;
		break;
	default:
		throw new IOException("Unknown field type on field '" + fieldInfo.getField().getName() + "'");
	}

	return size;
}