static void writeLong(Buffer buf, long v) { buf.writeByte((byte) ((v >>> 56L) & 0xff)); buf.writeByte((byte) ((v >>> 48L) & 0xff)); buf.writeByte((byte) ((v >>> 40L) & 0xff)); buf.writeByte((byte) ((v >>> 32L) & 0xff)); buf.writeByte((byte) ((v >>> 24L) & 0xff)); buf.writeByte((byte) ((v >>> 16L) & 0xff)); buf.writeByte((byte) ((v >>> 8L) & 0xff)); buf.writeByte((byte) (v & 0xff)); } }
void write(Buffer b, long number) { if (number == 0) return; b.writeByte(key); b.writeLongLe(number); }
void write(Buffer b, long number) { if (number == 0) return; b.writeByte(key); b.writeVarint(number); } }
void write(Buffer b, int number) { if (number == 0) return; b.writeByte(key); b.writeVarint(number); }
static void writeListBegin(Buffer buffer, int size) { buffer.writeByte(TYPE_STRUCT); writeInt(buffer, size); }
@Override void writeValue(Buffer b, String hex) { // similar logic to okio.ByteString.decodeHex for (int i = 0, length = hex.length(); i < length; i++) { int d1 = decodeLowerHex(hex.charAt(i++)) << 4; int d2 = decodeLowerHex(hex.charAt(i)); b.writeByte((byte) (d1 + d2)); } }
void writeSpan(Span span, int sizeOfSpan, Buffer result) { result.writeByte(SPAN.key); result.writeVarint(sizeOfSpan); // length prefix SPAN.writeValue(result, span); }
public Buffer writeAscii(long v) { if (v == 0) return writeByte('0'); if (v == Long.MIN_VALUE) return writeAscii("-9223372036854775808"); int width = asciiSizeInBytes(v); int pos = this.pos += width; // We write backwards from right to left. boolean negative = false; if (v < 0) { negative = true; v = -v; // needs to be positive so we can use this for an array index } while (v != 0) { int digit = (int) (v % 10); buf[--pos] = DIGITS[digit]; v /= 10; } if (negative) buf[--pos] = '-'; return this; }
final void write(Buffer b, T value) { if (value == null) return; int sizeOfValue = sizeOfValue(value); if (sizeOfValue == 0) return; b.writeByte(key); b.writeVarint(sizeOfValue); // length prefix writeValue(b, value); }
static void writeAnnotation(long timestamp, String value, @Nullable byte[] endpoint, Buffer b) { b.writeAscii("{\"timestamp\":").writeAscii(timestamp); b.writeAscii(",\"value\":\"").writeUtf8(jsonEscape(value)).writeByte('"'); if (endpoint != null) b.writeAscii(",\"endpoint\":").write(endpoint); b.writeByte('}'); } }
static void write(long timestamp, String value, byte[] endpointBytes, Buffer buffer) { TIMESTAMP.write(buffer); ThriftCodec.writeLong(buffer, timestamp); VALUE.write(buffer); ThriftCodec.writeLengthPrefixed(buffer, value); if (endpointBytes != null) { ENDPOINT.write(buffer); buffer.write(endpointBytes); } buffer.writeByte(TYPE_STOP); } }
static void write(Endpoint value, Buffer buffer) { IPV4.write(buffer); buffer.write(value.ipv4Bytes() != null ? value.ipv4Bytes() : INT_ZERO); PORT.write(buffer); int port = value.portAsInt(); // write short! buffer.writeByte((port >>> 8L) & 0xff); buffer.writeByte(port & 0xff); SERVICE_NAME.write(buffer); ThriftCodec.writeLengthPrefixed(buffer, value.serviceName() != null ? value.serviceName() : ""); byte[] ipv6 = value.ipv6Bytes(); if (ipv6 != null) { IPV6.write(buffer); ThriftCodec.writeInt(buffer, 16); buffer.write(ipv6); } buffer.writeByte(TYPE_STOP); } }
void write(Buffer buffer) { START_TS.write(buffer); ThriftCodec.writeLong(buffer, startTs); END_TS.write(buffer); ThriftCodec.writeLong(buffer, endTs); LINKS.write(buffer); ThriftCodec.writeList(DEPENDENCY_LINK_ADAPTER, links, buffer); buffer.writeByte(TYPE_STOP); }
static void write(String key, String stringValue, byte[] endpointBytes, Buffer buffer) { KEY.write(buffer); ThriftCodec.writeLengthPrefixed(buffer, key); VALUE.write(buffer); int type = 0; if (stringValue != null) { type = 6; ThriftCodec.writeInt(buffer, utf8SizeInBytes(stringValue)); buffer.writeUtf8(stringValue); } else { ThriftCodec.writeInt(buffer, 1); buffer.writeByte(1); } TYPE.write(buffer); ThriftCodec.writeInt(buffer, type); if (endpointBytes != null) { ENDPOINT.write(buffer); buffer.write(endpointBytes); } buffer.writeByte(TYPE_STOP); } }
static void writeBinaryAnnotation(String key, String value, @Nullable byte[] endpoint, Buffer b) { b.writeAscii("{\"key\":\"").writeUtf8(jsonEscape(key)); b.writeAscii("\",\"value\":\"").writeUtf8(jsonEscape(value)).writeByte('"'); if (endpoint != null) b.writeAscii(",\"endpoint\":").write(endpoint); b.writeAscii("}"); } }
@Override public void write(DependencyLink value, Buffer buffer) { PARENT.write(buffer); ThriftCodec.writeLengthPrefixed(buffer, value.parent()); CHILD.write(buffer); ThriftCodec.writeLengthPrefixed(buffer, value.child()); CALL_COUNT.write(buffer); ThriftCodec.writeLong(buffer, value.callCount()); if (value.errorCount() > 0) { ERROR_COUNT.write(buffer); ThriftCodec.writeLong(buffer, value.errorCount()); } buffer.writeByte(TYPE_STOP); } }