uhpacktables.pp 5.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. unit uhpacktables;
  2. interface
  3. const
  4. HPACK_HUFFMAN_CODES_LENGTH=257;
  5. HPackHuffmanCodes: array [0..HPACK_HUFFMAN_CODES_LENGTH-1] of DWORD =(
  6. $1ff8, $7fffd8, $fffffe2, $fffffe3, $fffffe4, $fffffe5, $fffffe6, $fffffe7,
  7. $fffffe8, $ffffea, $3ffffffc, $fffffe9, $fffffea, $3ffffffd, $fffffeb, $fffffec,
  8. $fffffed, $fffffee, $fffffef, $ffffff0, $ffffff1, $ffffff2, $3ffffffe, $ffffff3,
  9. $ffffff4, $ffffff5, $ffffff6, $ffffff7, $ffffff8, $ffffff9, $ffffffa, $ffffffb,
  10. $14, $3f8, $3f9, $ffa, $1ff9, $15, $f8, $7fa,
  11. $3fa, $3fb, $f9, $7fb, $fa, $16, $17, $18,
  12. $0, $1, $2, $19, $1a, $1b, $1c, $1d,
  13. $1e, $1f, $5c, $fb, $7ffc, $20, $ffb, $3fc,
  14. $1ffa, $21, $5d, $5e, $5f, $60, $61, $62,
  15. $63, $64, $65, $66, $67, $68, $69, $6a,
  16. $6b, $6c, $6d, $6e, $6f, $70, $71, $72,
  17. $fc, $73, $fd, $1ffb, $7fff0, $1ffc, $3ffc, $22,
  18. $7ffd, $3, $23, $4, $24, $5, $25, $26,
  19. $27, $6, $74, $75, $28, $29, $2a, $7,
  20. $2b, $76, $2c, $8, $9, $2d, $77, $78,
  21. $79, $7a, $7b, $7ffe, $7fc, $3ffd, $1ffd, $ffffffc,
  22. $fffe6, $3fffd2, $fffe7, $fffe8, $3fffd3, $3fffd4, $3fffd5, $7fffd9,
  23. $3fffd6, $7fffda, $7fffdb, $7fffdc, $7fffdd, $7fffde, $ffffeb, $7fffdf,
  24. $ffffec, $ffffed, $3fffd7, $7fffe0, $ffffee, $7fffe1, $7fffe2, $7fffe3,
  25. $7fffe4, $1fffdc, $3fffd8, $7fffe5, $3fffd9, $7fffe6, $7fffe7, $ffffef,
  26. $3fffda, $1fffdd, $fffe9, $3fffdb, $3fffdc, $7fffe8, $7fffe9, $1fffde,
  27. $7fffea, $3fffdd, $3fffde, $fffff0, $1fffdf, $3fffdf, $7fffeb, $7fffec,
  28. $1fffe0, $1fffe1, $3fffe0, $1fffe2, $7fffed, $3fffe1, $7fffee, $7fffef,
  29. $fffea, $3fffe2, $3fffe3, $3fffe4, $7ffff0, $3fffe5, $3fffe6, $7ffff1,
  30. $3ffffe0, $3ffffe1, $fffeb, $7fff1, $3fffe7, $7ffff2, $3fffe8, $1ffffec,
  31. $3ffffe2, $3ffffe3, $3ffffe4, $7ffffde, $7ffffdf, $3ffffe5, $fffff1, $1ffffed,
  32. $7fff2, $1fffe3, $3ffffe6, $7ffffe0, $7ffffe1, $3ffffe7, $7ffffe2, $fffff2,
  33. $1fffe4, $1fffe5, $3ffffe8, $3ffffe9, $ffffffd, $7ffffe3, $7ffffe4, $7ffffe5,
  34. $fffec, $fffff3, $fffed, $1fffe6, $3fffe9, $1fffe7, $1fffe8, $7ffff3,
  35. $3fffea, $3fffeb, $1ffffee, $1ffffef, $fffff4, $fffff5, $3ffffea, $7ffff4,
  36. $3ffffeb, $7ffffe6, $3ffffec, $3ffffed, $7ffffe7, $7ffffe8, $7ffffe9, $7ffffea,
  37. $7ffffeb, $ffffffe, $7ffffec, $7ffffed, $7ffffee, $7ffffef, $7fffff0, $3ffffee,
  38. $3fffffff // EOS
  39. );
  40. HPackHuffmanCodeLength: array [0..256] of byte =(
  41. 13, 23, 28, 28, 28, 28, 28, 28, 28, 24, 30, 28, 28, 30, 28, 28,
  42. 28, 28, 28, 28, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28,
  43. 6, 10, 10, 12, 13, 6, 8, 11, 10, 10, 8, 11, 8, 6, 6, 6,
  44. 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 8, 15, 6, 12, 10,
  45. 13, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
  46. 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 13, 19, 13, 14, 6,
  47. 15, 5, 6, 5, 6, 5, 6, 6, 6, 5, 7, 7, 6, 6, 6, 5,
  48. 6, 7, 6, 5, 5, 6, 7, 7, 7, 7, 7, 15, 11, 14, 13, 28,
  49. 20, 22, 20, 20, 22, 22, 22, 23, 22, 23, 23, 23, 23, 23, 24, 23,
  50. 24, 24, 22, 23, 24, 23, 23, 23, 23, 21, 22, 23, 22, 23, 23, 24,
  51. 22, 21, 20, 22, 22, 23, 23, 21, 23, 22, 22, 24, 21, 22, 23, 23,
  52. 21, 21, 22, 21, 23, 22, 23, 23, 20, 22, 22, 22, 23, 22, 22, 23,
  53. 26, 26, 20, 19, 22, 23, 22, 25, 26, 26, 26, 27, 27, 26, 24, 25,
  54. 19, 21, 26, 27, 27, 26, 27, 24, 21, 21, 26, 26, 28, 27, 27, 27,
  55. 20, 24, 20, 21, 22, 21, 21, 23, 22, 22, 25, 25, 24, 24, 26, 23,
  56. 26, 27, 26, 26, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 26,
  57. 30 // EOS
  58. );
  59. HPACK_HUFFMAN_EOS: integer = 256;
  60. HPACK_HEADER_ENTRY_OVERHEAD = 32;
  61. type
  62. THPackIndexType=(
  63. eHPackINCREMENTAL, // Section 6.2.1. Literal Header Field with Incremental Indexing
  64. eHPackNONE, // Section 6.2.2. Literal Header Field without Indexing
  65. eHPackNEVER // Section 6.2.3. Literal Header Field never Indexed
  66. );
  67. THPackState =(
  68. READ_HEADER_REPRESENTATION,
  69. READ_MAX_DYNAMIC_TABLE_SIZE,
  70. READ_INDEXED_HEADER,
  71. READ_INDEXED_HEADER_NAME,
  72. READ_LITERAL_HEADER_NAME_LENGTH_PREFIX,
  73. READ_LITERAL_HEADER_NAME_LENGTH,
  74. READ_LITERAL_HEADER_NAME,
  75. SKIP_LITERAL_HEADER_NAME,
  76. READ_LITERAL_HEADER_VALUE_LENGTH_PREFIX,
  77. READ_LITERAL_HEADER_VALUE_LENGTH,
  78. READ_LITERAL_HEADER_VALUE,
  79. SKIP_LITERAL_HEADER_VALUE
  80. );
  81. implementation
  82. end.