Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
9f8e9c8
Added supported for Function on server side. Fixed invokationresult …
Dec 9, 2019
ed2ff32
new documentation
Dec 9, 2019
2638055
new documentation
Dec 9, 2019
46297db
Added all matrixConnect and Disconnect functions. Fixed all tests. M…
Dec 9, 2019
3b08081
Add description to label when converting json to tree
dufourgilles Dec 13, 2019
dfbd5d1
Adding validation of connection request on server
dufourgilles Dec 13, 2019
22fa47c
fix contributors
dufourgilles Dec 13, 2019
5a830de
fix contributors
dufourgilles Dec 13, 2019
876ed09
Fixing getDirectory when root has more than 1 elements
Dec 14, 2019
42d351c
Added support for subscribe and unsubscribe of streams
dufourgilles Dec 14, 2019
58bc2d8
fixing matrix absolute connect
dufourgilles Dec 14, 2019
fd31d8d
Better error when doing getNodeByPath
dufourgilles Dec 16, 2019
8859478
handle connection for 1-to-1 matrix
dufourgilles Dec 18, 2019
4df675c
add maximumTotalConnects
dufourgilles Dec 18, 2019
2011b64
fix 1 to N matrix connect
dufourgilles Dec 18, 2019
6d03d10
Fix 1toN. Disconnect old source and connect to new one
dufourgilles Dec 19, 2019
0283ce3
Server should emit disconnect when connecting target with new source
dufourgilles Dec 19, 2019
a402f26
Update doc
dufourgilles Dec 19, 2019
b46b917
Do a disconnect if attempting to connect same src and target
dufourgilles Dec 19, 2019
61d9e01
fix disconnect
dufourgilles Dec 19, 2019
c712676
handle connect with empty sources
dufourgilles Dec 20, 2019
84d325c
added lock/unlock of connection
dufourgilles Dec 21, 2019
b00b1b3
added lock/unlock of connection
dufourgilles Dec 21, 2019
8b2109f
Fix disconnect for 1toN
dufourgilles Dec 21, 2019
734c0ea
Fix function result missing
dufourgilles Dec 22, 2019
341e887
Added -1 for defaultSources to disable disconnect
dufourgilles Dec 22, 2019
b11242e
fix disconnect when mismatch client server
dufourgilles Dec 22, 2019
3fdf5fe
Fix bug in command handling
dufourgilles Dec 22, 2019
9efb3e3
fix continuation message
dufourgilles Dec 23, 2019
60eab03
Ignore empty request on server
dufourgilles Dec 26, 2019
cf182c4
catch write error and disconnect
dufourgilles Dec 26, 2019
2bb46c2
Removed all ref to callabcks...using different approach...Added suppo…
dufourgilles Dec 29, 2019
f68f834
Fix toJSON for root
dufourgilles Dec 29, 2019
46a3525
version 2
dufourgilles Jan 5, 2020
40c3e5d
Finalized version 2.0.0
dufourgilles Jan 6, 2020
a6fb9ca
version 2 final fixes and good to go
dufourgilles Jan 7, 2020
080c708
Fixing missing EmberLib file. Added server events
dufourgilles Jan 7, 2020
8be7a62
Change server event format to include source ip:port
dufourgilles Jan 7, 2020
1106a8b
Fix setValue event to be inline with the other events
dufourgilles Jan 7, 2020
1939824
Fixed eslint errors
dufourgilles Jan 8, 2020
b9f7d2c
Adding Streams. Fixing bugs. Event/Errors using static value
dufourgilles Jan 11, 2020
d05a8bd
Added code coverage for Parameter
dufourgilles Jan 11, 2020
b129794
Matrix code coverage. Bug fixing
dufourgilles Jan 12, 2020
3ee9086
Adding test code coverage. EmberLib 100% upto Matrix
dufourgilles Jan 13, 2020
4ed624c
Adding test code coverage. EmberLib 100% upto Matrix
dufourgilles Jan 13, 2020
9af68b5
Added support for Template and QualifiedTemplate. Improved code cove…
dufourgilles Jan 15, 2020
5364625
92% code coverage
dufourgilles Jan 20, 2020
a06f5cd
Add missing files. Reformat S101Socket and S101Client
dufourgilles Jan 20, 2020
662bf20
v2.4.2
dufourgilles Jan 20, 2020
aac8f99
use latest asn1 lib
dufourgilles Jan 21, 2020
8145c3b
Fixed some client missing promise return. Add server preMatrixConnec…
dufourgilles Jan 23, 2020
e68ecaa
Fix matrix handling on server side
dufourgilles Jan 23, 2020
ec83eb6
Fixed tests. Changed server listen function to return promise
dufourgilles Jan 23, 2020
5b1377d
Added example for setValue
dufourgilles Jan 29, 2020
767779f
Fix duplicate dataIn
dufourgilles Feb 1, 2020
a339f14
Fix FunctionContent result encoding
dufourgilles Feb 1, 2020
ed89db5
fix expand and function content encoding/decoding
dufourgilles Feb 14, 2020
3b382b7
feat: hack setValue to immediately resolve - added setValueWithHacksa…
Feb 26, 2020
82618c3
feat: setValueNoAck - rename of function and cleanup
Feb 26, 2020
9110000
fix: promise didn´t resolve
Feb 26, 2020
fe9153e
Fix client parameter subscribe
dufourgilles Mar 1, 2020
a8c5495
Merge pull request #1 from olzzon/feat/timeout-hack
olzzon Mar 1, 2020
6bdcf11
Merge pull request #2 from dufourgilles/master
olzzon Mar 1, 2020
48037ab
Add support for streamDescriptor parsing from json
dufourgilles Mar 5, 2020
d09cee7
Merge pull request #11 from olzzon/feat/timeout-hack
dufourgilles Mar 5, 2020
26670d0
Merge pull request #3 from dufourgilles/master
olzzon Mar 5, 2020
f4624ae
Fixed tests
dufourgilles Mar 11, 2020
0891219
feat: export BER in index.js for manual ASN.1 encoding
Mar 28, 2020
91cedbe
Merge pull request #15 from olzzon/feat/export-ber
dufourgilles Apr 22, 2020
3248a95
Fixed TreeNode and tests
Sep 10, 2020
df384d7
Merge branch 'master' into bugfix/fix_tests_and_treenode_to_json
dufourgilles Sep 11, 2020
ad20436
rewrote line in better js
Sep 11, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions EmberLib/TreeNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const BER = require('../ber.js');
const ElementInterface = require("./ElementInterface");
const Invocation = require("./Invocation");
const Command = require("./Command");
const {COMMAND_GETDIRECTORY, COMMAND_SUBSCRIBE, COMMAND_UNSUBSCRIBE, COMMAND_INVOKE} = require("./constants");
const {COMMAND_GETDIRECTORY, COMMAND_SUBSCRIBE, COMMAND_UNSUBSCRIBE} = require("./constants");
const Errors = require("../Errors");

class TreeNode extends ElementInterface {
Expand Down Expand Up @@ -410,9 +410,7 @@ class TreeNode extends ElementInterface {
const node = this;
if (this.isRoot()) {
const elements = this.getChildren();
return {
elements: elements.map(e => e.toJSON())
};
return { elements: elements ? elements.map(e => e.toJSON()) : [] };
}
res.number = node.getNumber();
res.path = node.getPath();
Expand Down Expand Up @@ -557,4 +555,5 @@ class TreeNode extends ElementInterface {
}
}

module.exports = TreeNode;
module.exports = TreeNode;

27 changes: 17 additions & 10 deletions test/Ember.test.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
const expect = require("expect");
const { S101Client } = require("../EmberSocket");
const s101Buffer = Buffer.from("fe000e0001c001021f026082008d6b820089a0176a15a0050d03010201a10c310aa0080c066c6162656c73a01b6a19a0050d03010202a110310ea00c0c0a706172616d6574657273a051714fa0050d03010203a1463144a0080c066d6174726978a403020104a503020104aa183016a0147212a0050d03010201a1090c075072696d617279a203020102a303020101a8050d03010202a903020101f24cff", "hex");
const errorBuffer = Buffer.from("76fe000e0001c001021f026082008d6b820089a0176a15a0050d03010201a10c310aa0080c066c6162656c73a01b6a19a0050d03010202a110310ea00c0c0a706172616d6574657273a051714fa0050d03010203a1463144a0080c066d6174726978a403020104a503020104aa183016a0147212a0050d03010201a1090c075072696d617279a203020102a303020101a8050d03010202a903020101f24cff", "hex");
const ember = require("../EmberLib");
const BER = require('../ber.js');
const Errors = require('../Errors.js');
const EmberLib = require("../EmberLib");
const {ParameterTypefromBERTAG, ParameterTypetoBERTAG} = require("../EmberLib/ParameterType");

const s101Buffer = Buffer.from("fe000e0001c001021f026082008d6b820089a0176a15a0050d03010201a10c310aa0080c066c6162656c73a01b6a19a0050d03010202a110310ea00c0c0a706172616d6574657273a051714fa0050d03010203a1463144a0080c066d6174726978a403020104a503020104aa183016a0147212a0050d03010201a1090c075072696d617279a203020102a303020101a8050d03010202a903020101f24cff", "hex");
const errorBuffer = Buffer.from("76fe000e0001c001021f026082008d6b820089a0176a15a0050d03010201a10c310aa0080c066c6162656c73a01b6a19a0050d03010202a110310ea00c0c0a706172616d6574657273a051714fa0050d03010203a1463144a0080c066d6174726978a403020104a503020104aa183016a0147212a0050d03010201a1090c075072696d617279a203020102a303020101a8050d03010202a903020101f24cff", "hex");
const identifier = "node_identifier";
const description = "node_description";


describe("Ember", () => {
describe("generic", () => {
let client;
Expand All @@ -32,7 +34,7 @@ describe("Ember", () => {

it("should handle Errors in message", () => {
var ber = new BER.Reader(errorBuffer);
expect(() => ember.Root.decode(ber)).toThrow(Errors.UnimplementedEmberTypeError);
expect(() => EmberLib.Root.decode(ber)).toThrow(Errors.UnimplementedEmberTypeError);
});
it("Should have a toJSON()", () => {
const node = new EmberLib.Node();
Expand Down Expand Up @@ -78,7 +80,7 @@ describe("Ember", () => {
expect(res.contents.identifier).toBe(identifier);
});

it("should throw error if function getElement called from a node with longer parh", () => {
it("should throw error if function getElement called from a node with longer path", () => {
const root = new EmberLib.Root();
root.addChild(new EmberLib.Node(0));
root.getElement(0).addChild(new EmberLib.Node(1));
Expand Down Expand Up @@ -107,11 +109,17 @@ describe("Ember", () => {
let res = node.getRoot();
expect(res).toBe(root);
});
it("Root should have a toJSON function", () =>{
const root = new EmberLib.Root();
expect(root.toJSON()).toEqual({"elements": []});
root.addChild(new EmberLib.Node(0));
root.getElement(0).addChild(new EmberLib.Node(1));
expect(root.toJSON()).toEqual({"elements": [{"children": [{"nodeType": "Node", "number": 1, "path": "0.1"}], "nodeType": "Node", "number": 0, "path": "0"}]});
});
it("should have a getDirectory() and accept a callback for subscribers", () => {
const parameter = new EmberLib.Parameter(0);
parameter.contents = new EmberLib.ParameterContents(7, "integer");
parameter.contents.streamIdentifier = 12345;
let res = parameter.getDirectory(0, () => {});
let res = parameter.getDirectory(() => {});
expect(res).toBeDefined();
expect(parameter._subscribers.size).toBe(1);
});
Expand Down Expand Up @@ -368,7 +376,6 @@ describe("Ember", () => {
expect(f.contents.description).toBe(description);
expect(f.contents.result.length).toBe(1);
expect(f.contents.templateReference).toBe(func.contents.templateReference);

writer = new BER.Writer();
func.contents.identifier = null;
func.contents.arguments = null;
Expand All @@ -391,8 +398,8 @@ describe("Ember", () => {
EmberLib.FunctionContent.decode(new BER.Reader(writer.buffer));
throw new Error("Should not succeed");
}
catch(e) {
expect(e instanceof Errors.UnimplementedEmberTypeError).toBeTruthy();
catch(e) {
expect(e.name).toEqual('InvalidAsn1Error');
}
});
it("should throw an error if unable to decode content", () => {
Expand Down