MCPcopy Create free account
hub / github.com/apache/trafficserver / _encode_prefix

Method _encode_prefix

src/proxy/http3/QPACK.cc:336–364  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

334}
335
336int
337QPACK::_encode_prefix(uint16_t largest_reference, uint16_t base_index, IOBufferBlock *prefix)
338{
339 int ret;
340 if ((ret = xpack_encode_integer(reinterpret_cast<uint8_t *>(prefix->end()),
341 reinterpret_cast<uint8_t *>(prefix->end() + prefix->write_avail()), largest_reference, 8)) < 0) {
342 return -1;
343 }
344 prefix->fill(ret);
345
346 uint16_t delta;
347 prefix->end()[0] = 0x0;
348 if (base_index < largest_reference) {
349 prefix->end()[0] |= 0x80;
350 delta = largest_reference - base_index;
351 } else {
352 delta = base_index - largest_reference;
353 }
354
355 if ((ret = xpack_encode_integer(reinterpret_cast<uint8_t *>(prefix->end()),
356 reinterpret_cast<uint8_t *>(prefix->end() + prefix->write_avail()), delta, 7)) < 0) {
357 return -2;
358 }
359 prefix->fill(ret);
360
361 QPACKDebug("Encoded Header Data Prefix: largest_ref=%d, base_index=%d, delta=%d", largest_reference, base_index, delta);
362
363 return 0;
364}
365
366int
367QPACK::_encode_header(const MIMEField &field, uint16_t base_index, IOBufferBlock *compressed_header, uint16_t &referred_index)

Callers 1

encodeMethod · 0.95

Calls 4

xpack_encode_integerFunction · 0.85
endMethod · 0.45
write_availMethod · 0.45
fillMethod · 0.45

Tested by

no test coverage detected