|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // Copyright 2011 Mark Cavage, Inc. All rights reserved.
-
- var assert = require('assert');
- var Ber = require('asn1').Ber;
-
- var Control = require('./control');
- var EntryChangeNotificationControl =
- require('./entry_change_notification_control');
- var PersistentSearchControl = require('./persistent_search_control');
- var PagedResultsControl = require('./paged_results_control');
- var ServerSideSortingRequestControl =
- require('./server_side_sorting_request_control.js');
- var ServerSideSortingResponseControl =
- require('./server_side_sorting_response_control.js');
-
-
-
- ///--- API
-
- module.exports = {
-
- getControl: function getControl(ber) {
- assert.ok(ber);
-
- if (ber.readSequence() === null)
- return null;
-
- var type;
- var opts = {
- criticality: false,
- value: null
- };
-
- if (ber.length) {
- var end = ber.offset + ber.length;
-
- type = ber.readString();
- if (ber.offset < end) {
- if (ber.peek() === Ber.Boolean)
- opts.criticality = ber.readBoolean();
- }
-
- if (ber.offset < end)
- opts.value = ber.readString(Ber.OctetString, true);
- }
-
- var control;
- switch (type) {
- case PersistentSearchControl.OID:
- control = new PersistentSearchControl(opts);
- break;
- case EntryChangeNotificationControl.OID:
- control = new EntryChangeNotificationControl(opts);
- break;
- case PagedResultsControl.OID:
- control = new PagedResultsControl(opts);
- break;
- case ServerSideSortingRequestControl.OID:
- control = new ServerSideSortingRequestControl(opts);
- break;
- case ServerSideSortingResponseControl.OID:
- control = new ServerSideSortingResponseControl(opts);
- break;
- default:
- opts.type = type;
- control = new Control(opts);
- break;
- }
-
- return control;
- },
-
- Control: Control,
- EntryChangeNotificationControl: EntryChangeNotificationControl,
- PagedResultsControl: PagedResultsControl,
- PersistentSearchControl: PersistentSearchControl,
- ServerSideSortingRequestControl: ServerSideSortingRequestControl,
- ServerSideSortingResponseControl: ServerSideSortingResponseControl
- };
|