UNPKG

1.75 kBJavaScriptView Raw
1/*jslint node: true, nomen: true, esversion: 6 */
2"use strict";
3
4const assert = require('assert');
5
6const AbstractRegistry = require('./abstractRegistry');
7const Node = require('../node');
8
9//IT MUST START AT 0 because UPNP ROOT must have id 0
10var nodeIndex = 10;
11
12class MemoryRegistry extends AbstractRegistry {
13
14 /**
15 *
16 */
17 initialize(service, callback) {
18 this._dbMap = {};
19 this._count = 0;
20 this._repositoryById = {};
21 this._repositoryCount = 0;
22
23 super.initialize(service, callback);
24 }
25
26 /**
27 *
28 */
29 keyFromString(key) {
30 return parseInt(key, 10);
31 }
32
33 /**
34 *
35 */
36 clear(callback) {
37 this._dbMap = {};
38 this._count = 0;
39
40 callback(null);
41 }
42
43 /**
44 *
45 */
46 saveNode(node, modifiedProperties, callback) {
47 this._dbMap[node.id] = node;
48
49 callback(null, node);
50 }
51
52 /**
53 *
54 */
55 getNodeById(id, callback) {
56 var node = this._dbMap[id];
57
58 setImmediate(() => {
59 callback(null, node);
60 });
61 }
62
63 /**
64 *
65 * @param {Node} node
66 * @param {Function} callback
67 */
68 unregisterNode(node, callback) {
69 assert(node instanceof Node, "Invalid node parameter");
70 assert(typeof(callback) === "function", "Invalid callback parameter");
71
72 var id = node.id;
73 if (!this._dbMap[id]) {
74 return callback("Node not found");
75 }
76
77 delete this._dbMap[id];
78 this._count--;
79
80 callback();
81 }
82
83 /**
84 *
85 */
86 allocateNodeId(node, callback) {
87 node._id = nodeIndex++;
88 this._count++;
89
90 callback();
91 }
92
93 registerRepository(repository, repositoryHashKey, callback) {
94 repository._id = this._repositoryCount++;
95 this._repositoryById[repository._id] = repository;
96
97 callback(null, repository);
98 }
99}
100
101module.exports = MemoryRegistry;