12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // Copyright 2011 Mark Cavage, Inc. All rights reserved.
-
- var assert = require('assert-plus');
- var util = require('util');
-
- var asn1 = require('asn1');
-
- var Control = require('./control');
-
-
- ///--- Globals
-
- var BerReader = asn1.BerReader;
- var BerWriter = asn1.BerWriter;
-
-
- ///--- API
-
- function PersistentSearchControl(options) {
- assert.optionalObject(options);
- options = options || {};
- options.type = PersistentSearchControl.OID;
-
- if (options.value) {
- if (Buffer.isBuffer(options.value)) {
- this.parse(options.value);
- } else if (typeof (options.value) === 'object') {
- this._value = options.value;
- } else {
- throw new TypeError('options.value must be a Buffer or Object');
- }
- options.value = null;
- }
- Control.call(this, options);
- }
- util.inherits(PersistentSearchControl, Control);
- Object.defineProperties(PersistentSearchControl.prototype, {
- value: {
- get: function () { return this._value || {}; },
- configurable: false
- }
- });
-
- PersistentSearchControl.prototype.parse = function parse(buffer) {
- assert.ok(buffer);
-
- var ber = new BerReader(buffer);
- if (ber.readSequence()) {
- this._value = {
- changeTypes: ber.readInt(),
- changesOnly: ber.readBoolean(),
- returnECs: ber.readBoolean()
- };
-
- return true;
- }
-
- return false;
- };
-
- PersistentSearchControl.prototype._toBer = function (ber) {
- assert.ok(ber);
-
- if (!this._value)
- return;
-
- var writer = new BerWriter();
- writer.startSequence();
- writer.writeInt(this.value.changeTypes);
- writer.writeBoolean(this.value.changesOnly);
- writer.writeBoolean(this.value.returnECs);
- writer.endSequence();
-
- ber.writeBuffer(writer.buffer, 0x04);
- };
-
- PersistentSearchControl.prototype._json = function (obj) {
- obj.controlValue = this.value;
- return obj;
- };
-
- PersistentSearchControl.OID = '2.16.840.1.113730.3.4.3';
-
- ///--- Exports
- module.exports = PersistentSearchControl;
|