node-opcua-transport 2.55.0 → 2.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mocharc.yml +10 -10
- package/LICENSE +20 -20
- package/dist/source/AcknowledgeMessage.js +5 -5
- package/dist/source/AcknowledgeMessage.js.map +1 -1
- package/dist/source/TCPErrorMessage.js.map +1 -1
- package/dist/source/client_tcp_transport.d.ts +3 -3
- package/dist/source/client_tcp_transport.js +2 -2
- package/dist/source/client_tcp_transport.js.map +1 -1
- package/dist/source/server_tcp_transport.d.ts +3 -0
- package/dist/source/server_tcp_transport.js +2 -7
- package/dist/source/server_tcp_transport.js.map +1 -1
- package/dist/source/tcp_transport.js +2 -2
- package/dist/source/tools.d.ts +1 -1
- package/dist/source/tools.js +4 -4
- package/dist/source/tools.js.map +1 -1
- package/dist/source/utils.js +1 -1
- package/dist/source/utils.js.map +1 -1
- package/dist/test-fixtures/fixture_full_tcp_packets.js +8 -8
- package/dist/test-fixtures/fixture_full_tcp_packets.js.map +1 -1
- package/dist/test_helpers/direct_transport.d.ts +1 -1
- package/dist/test_helpers/direct_transport.js.map +1 -1
- package/dist/test_helpers/fake_server.d.ts +2 -2
- package/dist/test_helpers/fake_server.js +1 -1
- package/dist/test_helpers/fake_server.js.map +1 -1
- package/dist/test_helpers/half_com_channel.js +2 -4
- package/dist/test_helpers/half_com_channel.js.map +1 -1
- package/dist/test_helpers/socket_transport.js +1 -0
- package/dist/test_helpers/socket_transport.js.map +1 -1
- package/package.json +11 -9
- package/source/AcknowledgeMessage.ts +7 -9
- package/source/TCPErrorMessage.ts +58 -57
- package/source/client_tcp_transport.ts +366 -366
- package/source/index.ts +11 -11
- package/source/message_builder_base.ts +2 -2
- package/source/server_tcp_transport.ts +11 -12
- package/source/tcp_transport.ts +455 -455
- package/source/tools.ts +4 -4
- package/source/utils.ts +1 -1
- package/test_helpers/direct_transport.ts +2 -2
- package/test_helpers/fake_server.ts +69 -71
- package/test_helpers/half_com_channel.ts +2 -5
- package/test_helpers/index.ts +4 -4
- package/test_helpers/socket_transport.ts +33 -34
package/source/tools.ts
CHANGED
|
@@ -47,18 +47,18 @@ export function decodeMessage(stream: BinaryStream, classNameConstructor: Constr
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
export function packTcpMessage(msgType: string,
|
|
50
|
+
export function packTcpMessage(msgType: string, encodeableObject: BaseUAObject): Buffer {
|
|
51
51
|
assert(is_valid_msg_type(msgType));
|
|
52
52
|
|
|
53
|
-
const messageChunk = createFastUninitializedBuffer(
|
|
53
|
+
const messageChunk = createFastUninitializedBuffer(encodeableObject.binaryStoreSize() + 8);
|
|
54
54
|
// encode encodeableObject in a packet
|
|
55
55
|
const stream = new BinaryStream(messageChunk);
|
|
56
|
-
encodeMessage(msgType,
|
|
56
|
+
encodeMessage(msgType, encodeableObject, stream);
|
|
57
57
|
|
|
58
58
|
return messageChunk;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
// opc.tcp://
|
|
61
|
+
// opc.tcp://hostname:51210/UA/SampleServer
|
|
62
62
|
export function parseEndpointUrl(endpointUrl: string): url.Url {
|
|
63
63
|
const _url = url.parse(endpointUrl);
|
|
64
64
|
if (!_url.protocol || !_url.hostname) {
|
package/source/utils.ts
CHANGED
|
@@ -8,7 +8,7 @@ export class DirectTransport extends EventEmitter {
|
|
|
8
8
|
public server: HalfComChannel;
|
|
9
9
|
public url: string;
|
|
10
10
|
|
|
11
|
-
private _responses?:
|
|
11
|
+
private _responses?: ((socket: HalfComChannel, data: Buffer) => void)[];
|
|
12
12
|
constructor() {
|
|
13
13
|
super();
|
|
14
14
|
|
|
@@ -66,7 +66,7 @@ export class DirectTransport extends EventEmitter {
|
|
|
66
66
|
return this._responses.shift();
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
public pushResponse(func:
|
|
69
|
+
public pushResponse(func: (socket: HalfComChannel, data: Buffer) => void): void {
|
|
70
70
|
this._responses = this._responses || [];
|
|
71
71
|
this._responses.push(func);
|
|
72
72
|
}
|
|
@@ -1,71 +1,69 @@
|
|
|
1
|
-
import { EventEmitter } from "events";
|
|
2
|
-
import * as
|
|
3
|
-
import { assert } from "node-opcua-assert";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
public port: number;
|
|
10
|
-
public url: string;
|
|
11
|
-
public tcpServer: net.Server;
|
|
12
|
-
protected _serverSocket?: net.Socket;
|
|
13
|
-
private _responses?: any[];
|
|
14
|
-
|
|
15
|
-
constructor() {
|
|
16
|
-
super();
|
|
17
|
-
this.port = port;
|
|
18
|
-
|
|
19
|
-
this.url = "opc.tcp://localhost:" + port;
|
|
20
|
-
|
|
21
|
-
this.tcpServer = new net.Server();
|
|
22
|
-
|
|
23
|
-
this._serverSocket = undefined;
|
|
24
|
-
|
|
25
|
-
this.tcpServer.on("connection", (socket: net.Socket) => {
|
|
26
|
-
assert(!this._serverSocket, " already connected");
|
|
27
|
-
this._serverSocket = socket;
|
|
28
|
-
|
|
29
|
-
this._serverSocket.on("data", (data: Buffer) => {
|
|
30
|
-
const func = this.popResponse();
|
|
31
|
-
if (func) {
|
|
32
|
-
func(this._serverSocket, data);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
this._serverSocket.on("err", (err: Error) => {
|
|
36
|
-
// console.log(" @@@@ socket err ",err);
|
|
37
|
-
});
|
|
38
|
-
this._serverSocket.on("close", (err?: Error) => {
|
|
39
|
-
// console.log(" @@@@ socket closed ",err);
|
|
40
|
-
});
|
|
41
|
-
this._serverSocket.on("end", (err?: Error) => {
|
|
42
|
-
// console.log(" @@@@ socket end ",err);
|
|
43
|
-
this.emit("end", err);
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
public initialize(done: () => void) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this._responses
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
import * as net from "net";
|
|
3
|
+
import { assert } from "node-opcua-assert";
|
|
4
|
+
import { HalfComChannel } from "./half_com_channel";
|
|
5
|
+
|
|
6
|
+
const port = 5678;
|
|
7
|
+
|
|
8
|
+
export class FakeServer extends EventEmitter {
|
|
9
|
+
public port: number;
|
|
10
|
+
public url: string;
|
|
11
|
+
public tcpServer: net.Server;
|
|
12
|
+
protected _serverSocket?: net.Socket;
|
|
13
|
+
private _responses?: any[];
|
|
14
|
+
|
|
15
|
+
constructor() {
|
|
16
|
+
super();
|
|
17
|
+
this.port = port;
|
|
18
|
+
|
|
19
|
+
this.url = "opc.tcp://localhost:" + port;
|
|
20
|
+
|
|
21
|
+
this.tcpServer = new net.Server();
|
|
22
|
+
|
|
23
|
+
this._serverSocket = undefined;
|
|
24
|
+
|
|
25
|
+
this.tcpServer.on("connection", (socket: net.Socket) => {
|
|
26
|
+
assert(!this._serverSocket, " already connected");
|
|
27
|
+
this._serverSocket = socket;
|
|
28
|
+
|
|
29
|
+
this._serverSocket.on("data", (data: Buffer) => {
|
|
30
|
+
const func = this.popResponse();
|
|
31
|
+
if (func && this._serverSocket) {
|
|
32
|
+
func(this._serverSocket, data);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
this._serverSocket.on("err", (err: Error) => {
|
|
36
|
+
// console.log(" @@@@ socket err ",err);
|
|
37
|
+
});
|
|
38
|
+
this._serverSocket.on("close", (err?: Error) => {
|
|
39
|
+
// console.log(" @@@@ socket closed ",err);
|
|
40
|
+
});
|
|
41
|
+
this._serverSocket.on("end", (err?: Error) => {
|
|
42
|
+
// console.log(" @@@@ socket end ",err);
|
|
43
|
+
this.emit("end", err);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public initialize(done: () => void): void {
|
|
49
|
+
this.tcpServer.listen(this.port, () => {
|
|
50
|
+
done();
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public shutdown(callback: (err?: Error) => void): void {
|
|
55
|
+
this.tcpServer.close(callback);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public popResponse(): ((socket: net.Socket, data: Buffer) => void) | null {
|
|
59
|
+
if (!this._responses) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return this._responses.shift();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public pushResponse(func: (socket: net.Socket, data: Buffer) => void): void {
|
|
66
|
+
this._responses = this._responses || [];
|
|
67
|
+
this._responses.push(func);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -11,7 +11,6 @@ export class HalfComChannel extends EventEmitter {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
public write(data: string | Buffer): void {
|
|
14
|
-
|
|
15
14
|
if (typeof data === "string") {
|
|
16
15
|
data = Buffer.from(data);
|
|
17
16
|
}
|
|
@@ -29,9 +28,7 @@ export class HalfComChannel extends EventEmitter {
|
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
public destroy(): void {
|
|
33
|
-
}
|
|
31
|
+
public destroy(): void {}
|
|
34
32
|
|
|
35
|
-
public setTimeout(): void {
|
|
36
|
-
}
|
|
33
|
+
public setTimeout(): void {}
|
|
37
34
|
}
|
package/test_helpers/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./fake_server";
|
|
2
|
-
export * from "./direct_transport";
|
|
3
|
-
export * from "./socket_transport";
|
|
4
|
-
export * from "./half_com_channel";
|
|
1
|
+
export * from "./fake_server";
|
|
2
|
+
export * from "./direct_transport";
|
|
3
|
+
export * from "./socket_transport";
|
|
4
|
+
export * from "./half_com_channel";
|
|
@@ -1,34 +1,33 @@
|
|
|
1
|
-
// tslint:disable:no-empty
|
|
2
|
-
import * as
|
|
3
|
-
import { FakeServer } from "./fake_server";
|
|
4
|
-
|
|
5
|
-
export class SocketTransport extends FakeServer {
|
|
6
|
-
|
|
7
|
-
private
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
1
|
+
// tslint:disable:no-empty
|
|
2
|
+
import * as net from "net";
|
|
3
|
+
import { FakeServer } from "./fake_server";
|
|
4
|
+
|
|
5
|
+
export class SocketTransport extends FakeServer {
|
|
6
|
+
private client: net.Socket;
|
|
7
|
+
private server?: net.Socket;
|
|
8
|
+
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
|
|
12
|
+
this.client = new net.Socket();
|
|
13
|
+
this.client.connect(this.port, (err?: Error): void => {
|
|
14
|
+
/** */
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public initialize(done: () => void): void {
|
|
19
|
+
super.initialize(() => {
|
|
20
|
+
this.tcpServer.on("connection", (socket: net.Socket) => {
|
|
21
|
+
this.server = this._serverSocket;
|
|
22
|
+
done();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public shutdown(done: (err?: Error) => void): void {
|
|
28
|
+
this.client.end();
|
|
29
|
+
super.shutdown((err?: Error) => {
|
|
30
|
+
done(err);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|