智慧水务管理系统 - 精河县供水工程综合管理平台

reader_buffer.js 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. "use strict";
  2. module.exports = BufferReader;
  3. // extends Reader
  4. var Reader = require("./reader");
  5. (BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;
  6. var util = require("./util/minimal");
  7. /**
  8. * Constructs a new buffer reader instance.
  9. * @classdesc Wire format reader using node buffers.
  10. * @extends Reader
  11. * @constructor
  12. * @param {Buffer} buffer Buffer to read from
  13. */
  14. function BufferReader(buffer) {
  15. Reader.call(this, buffer);
  16. /**
  17. * Read buffer.
  18. * @name BufferReader#buf
  19. * @type {Buffer}
  20. */
  21. }
  22. BufferReader._configure = function () {
  23. /* istanbul ignore else */
  24. if (util.Buffer)
  25. BufferReader.prototype._slice = util.Buffer.prototype.slice;
  26. };
  27. /**
  28. * Returns raw bytes from the backing buffer without advancing the reader.
  29. * @name BufferReader#raw
  30. * @function
  31. * @param {number} start Start offset
  32. * @param {number} end End offset
  33. * @returns {Buffer} Raw bytes
  34. */
  35. BufferReader.prototype.raw = function read_raw_buffer(start, end) {
  36. if (start === end)
  37. return util.Buffer.alloc(0);
  38. return this._slice.call(this.buf, start, end);
  39. };
  40. /**
  41. * @override
  42. */
  43. BufferReader.prototype.string = function read_string_buffer() {
  44. var len = this.uint32(), // modifies pos
  45. start = this.pos,
  46. end = this.pos + len;
  47. /* istanbul ignore if */
  48. if (end > this.len)
  49. throw RangeError("index out of range: " + this.pos + " + " + len + " > " + this.len);
  50. this.pos = end;
  51. return this.buf.utf8Slice
  52. ? this.buf.utf8Slice(start, end)
  53. : this.buf.toString("utf-8", start, end);
  54. };
  55. /**
  56. * Reads a sequence of bytes preceeded by its length as a varint.
  57. * @name BufferReader#bytes
  58. * @function
  59. * @returns {Buffer} Value read
  60. */
  61. BufferReader._configure();