XdrDecoder.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.XdrDecoder = void 0;
  4. const Reader_1 = require("@jsonjoy.com/buffers/lib/Reader");
  5. class XdrDecoder {
  6. constructor(reader = new Reader_1.Reader()) {
  7. this.reader = reader;
  8. }
  9. read(uint8) {
  10. this.reader.reset(uint8);
  11. return this.readAny();
  12. }
  13. decode(uint8) {
  14. this.reader.reset(uint8);
  15. return this.readAny();
  16. }
  17. readAny() {
  18. throw new Error('not implemented');
  19. }
  20. readVoid() {
  21. }
  22. readBoolean() {
  23. return this.readInt() !== 0;
  24. }
  25. readInt() {
  26. const reader = this.reader;
  27. const value = reader.view.getInt32(reader.x, false);
  28. reader.x += 4;
  29. return value;
  30. }
  31. readUnsignedInt() {
  32. const reader = this.reader;
  33. const value = reader.view.getUint32(reader.x, false);
  34. reader.x += 4;
  35. return value;
  36. }
  37. readHyper() {
  38. const reader = this.reader;
  39. const value = reader.view.getBigInt64(reader.x, false);
  40. reader.x += 8;
  41. return value;
  42. }
  43. readUnsignedHyper() {
  44. const reader = this.reader;
  45. const value = reader.view.getBigUint64(reader.x, false);
  46. reader.x += 8;
  47. return value;
  48. }
  49. readFloat() {
  50. const reader = this.reader;
  51. const value = reader.view.getFloat32(reader.x, false);
  52. reader.x += 4;
  53. return value;
  54. }
  55. readDouble() {
  56. const reader = this.reader;
  57. const value = reader.view.getFloat64(reader.x, false);
  58. reader.x += 8;
  59. return value;
  60. }
  61. readQuadruple() {
  62. throw new Error('not implemented');
  63. }
  64. readOpaque(size) {
  65. const reader = this.reader;
  66. const data = reader.buf(size);
  67. const paddedSize = size % 4 === 0 ? size : size + (4 - (size % 4));
  68. reader.skip(paddedSize - size);
  69. return data;
  70. }
  71. readVarlenOpaque() {
  72. const size = this.readUnsignedInt();
  73. return this.readOpaque(size);
  74. }
  75. readString() {
  76. const size = this.readUnsignedInt();
  77. const reader = this.reader;
  78. const text = reader.utf8(size);
  79. const paddedSize = size % 4 === 0 ? size : size + (4 - (size % 4));
  80. reader.skip(paddedSize - size);
  81. return text;
  82. }
  83. readEnum() {
  84. return this.readInt();
  85. }
  86. readArray(size, elementReader) {
  87. const array = [];
  88. for (let i = 0; i < size; i++)
  89. array.push(elementReader());
  90. return array;
  91. }
  92. readVarlenArray(elementReader) {
  93. const size = this.readUnsignedInt();
  94. return this.readArray(size, elementReader);
  95. }
  96. }
  97. exports.XdrDecoder = XdrDecoder;
  98. //# sourceMappingURL=XdrDecoder.js.map