node-opcua-transport 2.68.0 → 2.70.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.
Files changed (37) hide show
  1. package/dist/source/client_tcp_transport.d.ts +8 -4
  2. package/dist/source/client_tcp_transport.js +15 -6
  3. package/dist/source/client_tcp_transport.js.map +1 -1
  4. package/dist/source/index.d.ts +5 -3
  5. package/dist/source/index.js +5 -3
  6. package/dist/source/index.js.map +1 -1
  7. package/dist/source/message_builder_base.d.ts +27 -7
  8. package/dist/source/message_builder_base.js +36 -13
  9. package/dist/source/message_builder_base.js.map +1 -1
  10. package/dist/source/server_tcp_transport.d.ts +1 -5
  11. package/dist/source/server_tcp_transport.js +41 -39
  12. package/dist/source/server_tcp_transport.js.map +1 -1
  13. package/dist/source/status_codes.d.ts +100 -0
  14. package/dist/source/status_codes.js +111 -0
  15. package/dist/source/status_codes.js.map +1 -0
  16. package/dist/source/tcp_transport.d.ts +21 -28
  17. package/dist/source/tcp_transport.js +86 -57
  18. package/dist/source/tcp_transport.js.map +1 -1
  19. package/dist/source/tools.d.ts +1 -0
  20. package/dist/source/utils.d.ts +3 -2
  21. package/dist/source/utils.js +4 -3
  22. package/dist/source/utils.js.map +1 -1
  23. package/dist/test_helpers/direct_transport.d.ts +4 -0
  24. package/dist/test_helpers/direct_transport.js.map +1 -1
  25. package/dist/test_helpers/fake_server.d.ts +2 -0
  26. package/dist/test_helpers/half_com_channel.d.ts +7 -0
  27. package/dist/test_helpers/half_com_channel.js.map +1 -1
  28. package/package.json +16 -17
  29. package/source/client_tcp_transport.ts +21 -9
  30. package/source/index.ts +5 -3
  31. package/source/message_builder_base.ts +68 -16
  32. package/source/server_tcp_transport.ts +50 -47
  33. package/source/status_codes.ts +109 -0
  34. package/source/tcp_transport.ts +118 -73
  35. package/source/utils.ts +3 -2
  36. package/test_helpers/direct_transport.ts +4 -1
  37. package/test_helpers/half_com_channel.ts +7 -0
@@ -0,0 +1,100 @@
1
+ export declare const StatusCodes2: {
2
+ /**
3
+ * The Server cannot process the request because it is too busy.
4
+ *
5
+ * It is up to the Server to determine when it needs to return this Message.
6
+ *
7
+ * A Server can control the how frequently a Client reconnects by waiting to return this error.
8
+ */
9
+ BadTcpServerTooBusy: import("node-opcua-status-code").ConstantStatusCode;
10
+ /**
11
+ * The type of the Message specified in the header invalid.
12
+ * Each Message starts with a 4-byte sequence of ASCII values that identifies the Message type.
13
+ * The Server returns this error if the Message type is not accepted.
14
+ * Some of the Message types are defined by the SecureChannel layer.
15
+ */
16
+ BadTcpMessageTypeInvalid: import("node-opcua-status-code").ConstantStatusCode;
17
+ /**
18
+ * The SecureChannelId and/or TokenId are not currently in use.
19
+ * This error is reported by the SecureChannel layer.
20
+ */
21
+ BadTcpSecureChannelUnknown: import("node-opcua-status-code").ConstantStatusCode;
22
+ /**
23
+ * The size of the Message specified in the header is too large.
24
+ * The Server returns this error if the Message size exceeds its maximum buffer size
25
+ * or the receive buffer size negotiated during the Hello/Acknowledge exchange.
26
+ */
27
+ BadTcpMessageTooLarge: import("node-opcua-status-code").ConstantStatusCode;
28
+ /**
29
+ * A timeout occurred while accessing a resource.
30
+ * It is up to the Server to determine when a timeout occurs.
31
+ */
32
+ BadTimeout: import("node-opcua-status-code").ConstantStatusCode;
33
+ /**
34
+ * There are not enough resources to process the request.
35
+ * The Server returns this error when it runs out of memory or encounters similar resource problems.
36
+ * A Server can control the how frequently a Client reconnects by waiting to return this error.
37
+ */
38
+ BadTcpNotEnoughResources: import("node-opcua-status-code").ConstantStatusCode;
39
+ /**
40
+ * An internal error occurred.
41
+ * This should only be returned if an unexpected configuration or programming error occurs.
42
+ */
43
+ BadTcpInternalError: import("node-opcua-status-code").ConstantStatusCode;
44
+ /**
45
+ * The Server does not recognize the EndpointUrl specified.
46
+ */
47
+ BadTcpEndpointUrlInvalid: import("node-opcua-status-code").ConstantStatusCode;
48
+ /**
49
+ * The Message was rejected because it could not be verified.
50
+ */
51
+ BadSecurityChecksFailed: import("node-opcua-status-code").ConstantStatusCode;
52
+ /**
53
+ * The request could not be sent because of a network interruption.
54
+ */
55
+ BadRequestInterrupted: import("node-opcua-status-code").ConstantStatusCode;
56
+ /**
57
+ * Timeout occurred while processing the request.
58
+ */
59
+ BadRequestTimeout: import("node-opcua-status-code").ConstantStatusCode;
60
+ /**
61
+ * The secure channel has been closed.
62
+ */
63
+ BadSecureChannelClosed: import("node-opcua-status-code").ConstantStatusCode;
64
+ /**
65
+ * The SecurityToken has expired or is not recognized. BadSecureChannelTokenUnknown
66
+ */
67
+ BadSecureChannelTokenUnknown: import("node-opcua-status-code").ConstantStatusCode;
68
+ /**
69
+ * The sender Certificate is not trusted by the receiver.
70
+ */
71
+ BadCertificateUntrusted: import("node-opcua-status-code").ConstantStatusCode;
72
+ /**
73
+ * The sender Certificate has expired or is not yet valid.
74
+ */
75
+ BadCertificateTimeInvalid: import("node-opcua-status-code").ConstantStatusCode;
76
+ /**
77
+ * The issuer for the sender Certificate has expired or is not yet valid.
78
+ */
79
+ BadCertificateIssuerTimeInvalid: import("node-opcua-status-code").ConstantStatusCode;
80
+ /**
81
+ * The sender’s Certificate may not be used for establishing a secure channel.
82
+ */
83
+ BadCertificateUseNotAllowed: import("node-opcua-status-code").ConstantStatusCode;
84
+ /**
85
+ * The issuer Certificate may not be used as a Certificate Authority.
86
+ */
87
+ BadCertificateIssuerUseNotAllowed: import("node-opcua-status-code").ConstantStatusCode;
88
+ /**
89
+ * Could not verify the revocation status of the sender’s Certificate.
90
+ */
91
+ BadCertificateRevocationUnknown: import("node-opcua-status-code").ConstantStatusCode;
92
+ /**
93
+ * Could not verify the revocation status of the issuer Certificate.
94
+ */
95
+ BadCertificateIssuerRevocationUnknown: import("node-opcua-status-code").ConstantStatusCode;
96
+ /**
97
+ * The sender Certificate has been revoked by the issuer.
98
+ */
99
+ BadCertificateRevoked: import("node-opcua-status-code").ConstantStatusCode;
100
+ };
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StatusCodes2 = void 0;
4
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
5
+ exports.StatusCodes2 = {
6
+ /**
7
+ * The Server cannot process the request because it is too busy.
8
+ *
9
+ * It is up to the Server to determine when it needs to return this Message.
10
+ *
11
+ * A Server can control the how frequently a Client reconnects by waiting to return this error.
12
+ */
13
+ BadTcpServerTooBusy: node_opcua_status_code_1.StatusCodes.BadTcpServerTooBusy,
14
+ /**
15
+ * The type of the Message specified in the header invalid.
16
+ * Each Message starts with a 4-byte sequence of ASCII values that identifies the Message type.
17
+ * The Server returns this error if the Message type is not accepted.
18
+ * Some of the Message types are defined by the SecureChannel layer.
19
+ */
20
+ BadTcpMessageTypeInvalid: node_opcua_status_code_1.StatusCodes.BadTcpMessageTypeInvalid,
21
+ /**
22
+ * The SecureChannelId and/or TokenId are not currently in use.
23
+ * This error is reported by the SecureChannel layer.
24
+ */
25
+ BadTcpSecureChannelUnknown: node_opcua_status_code_1.StatusCodes.BadTcpSecureChannelUnknown,
26
+ /**
27
+ * The size of the Message specified in the header is too large.
28
+ * The Server returns this error if the Message size exceeds its maximum buffer size
29
+ * or the receive buffer size negotiated during the Hello/Acknowledge exchange.
30
+ */
31
+ BadTcpMessageTooLarge: node_opcua_status_code_1.StatusCodes.BadTcpMessageTooLarge,
32
+ /**
33
+ * A timeout occurred while accessing a resource.
34
+ * It is up to the Server to determine when a timeout occurs.
35
+ */
36
+ BadTimeout: node_opcua_status_code_1.StatusCodes.BadTimeout,
37
+ /**
38
+ * There are not enough resources to process the request.
39
+ * The Server returns this error when it runs out of memory or encounters similar resource problems.
40
+ * A Server can control the how frequently a Client reconnects by waiting to return this error.
41
+ */
42
+ BadTcpNotEnoughResources: node_opcua_status_code_1.StatusCodes.BadTcpNotEnoughResources,
43
+ /**
44
+ * An internal error occurred.
45
+ * This should only be returned if an unexpected configuration or programming error occurs.
46
+ */
47
+ BadTcpInternalError: node_opcua_status_code_1.StatusCodes.BadTcpInternalError,
48
+ /**
49
+ * The Server does not recognize the EndpointUrl specified.
50
+ */
51
+ BadTcpEndpointUrlInvalid: node_opcua_status_code_1.StatusCodes.BadTcpEndpointUrlInvalid,
52
+ /**
53
+ * The Message was rejected because it could not be verified.
54
+ */
55
+ BadSecurityChecksFailed: node_opcua_status_code_1.StatusCodes.BadSecurityChecksFailed,
56
+ /**
57
+ * The request could not be sent because of a network interruption.
58
+ */
59
+ BadRequestInterrupted: node_opcua_status_code_1.StatusCodes.BadRequestInterrupted,
60
+ /**
61
+ * Timeout occurred while processing the request.
62
+ */
63
+ BadRequestTimeout: node_opcua_status_code_1.StatusCodes.BadRequestTimeout,
64
+ /**
65
+ * The secure channel has been closed.
66
+ */
67
+ BadSecureChannelClosed: node_opcua_status_code_1.StatusCodes.BadSecureChannelClosed,
68
+ /**
69
+ * The SecurityToken has expired or is not recognized. BadSecureChannelTokenUnknown
70
+ */
71
+ BadSecureChannelTokenUnknown: node_opcua_status_code_1.StatusCodes.BadSecureChannelTokenUnknown,
72
+ /**
73
+ * The sender Certificate is not trusted by the receiver.
74
+ */
75
+ BadCertificateUntrusted: node_opcua_status_code_1.StatusCodes.BadCertificateUntrusted,
76
+ /**
77
+ * The sender Certificate has expired or is not yet valid.
78
+ */
79
+ BadCertificateTimeInvalid: node_opcua_status_code_1.StatusCodes.BadCertificateTimeInvalid,
80
+ /**
81
+ * The issuer for the sender Certificate has expired or is not yet valid.
82
+ */
83
+ BadCertificateIssuerTimeInvalid: node_opcua_status_code_1.StatusCodes.BadCertificateIssuerTimeInvalid,
84
+ /**
85
+ * The sender’s Certificate may not be used for establishing a secure channel.
86
+ */
87
+ BadCertificateUseNotAllowed: node_opcua_status_code_1.StatusCodes.BadCertificateUseNotAllowed,
88
+ /**
89
+ * The issuer Certificate may not be used as a Certificate Authority.
90
+ */
91
+ BadCertificateIssuerUseNotAllowed: node_opcua_status_code_1.StatusCodes.BadCertificateIssuerUseNotAllowed,
92
+ /**
93
+ * Could not verify the revocation status of the sender’s Certificate.
94
+ */
95
+ BadCertificateRevocationUnknown: node_opcua_status_code_1.StatusCodes.BadCertificateRevocationUnknown,
96
+ /**
97
+ * Could not verify the revocation status of the issuer Certificate.
98
+ */
99
+ BadCertificateIssuerRevocationUnknown: node_opcua_status_code_1.StatusCodes.BadCertificateIssuerRevocationUnknown,
100
+ /**
101
+ * The sender Certificate has been revoked by the issuer.
102
+ */
103
+ BadCertificateRevoked: node_opcua_status_code_1.StatusCodes.BadCertificateRevoked
104
+ /**The issuer Certificate has been revoked by its issuer.
105
+ */
106
+ // todo BadIssuerCertificateRevoked: StatusCodes.BadIssuerCertificateRevoked,
107
+ /** The receiver Certificate thumbprint is not recognized by the receiver.
108
+ */
109
+ // todo .. BadCertificateUnknown: StatusCodes.BadCertificateUnknown
110
+ };
111
+ //# sourceMappingURL=status_codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status_codes.js","sourceRoot":"","sources":["../../source/status_codes.ts"],"names":[],"mappings":";;;AAAA,mEAAqD;AAExC,QAAA,YAAY,GAAG;IACxB;;;;;;OAMG;IACH,mBAAmB,EAAE,oCAAW,CAAC,mBAAmB;IACpD;;;;;OAKG;IACH,wBAAwB,EAAE,oCAAW,CAAC,wBAAwB;IAC9D;;;OAGG;IACH,0BAA0B,EAAE,oCAAW,CAAC,0BAA0B;IAClE;;;;OAIG;IACH,qBAAqB,EAAE,oCAAW,CAAC,qBAAqB;IAExD;;;OAGG;IACH,UAAU,EAAE,oCAAW,CAAC,UAAU;IAClC;;;;OAIG;IACH,wBAAwB,EAAE,oCAAW,CAAC,wBAAwB;IAC9D;;;OAGG;IACH,mBAAmB,EAAE,oCAAW,CAAC,mBAAmB;IACpD;;OAEG;IACH,wBAAwB,EAAE,oCAAW,CAAC,wBAAwB;IAC9D;;OAEG;IACH,uBAAuB,EAAE,oCAAW,CAAC,uBAAuB;IAC5D;;OAEG;IACH,qBAAqB,EAAE,oCAAW,CAAC,qBAAqB;IACxD;;OAEG;IACH,iBAAiB,EAAE,oCAAW,CAAC,iBAAiB;IAChD;;OAEG;IACH,sBAAsB,EAAE,oCAAW,CAAC,sBAAsB;IAC1D;;OAEG;IACH,4BAA4B,EAAE,oCAAW,CAAC,4BAA4B;IACtE;;OAEG;IACH,uBAAuB,EAAE,oCAAW,CAAC,uBAAuB;IAC5D;;OAEG;IACH,yBAAyB,EAAE,oCAAW,CAAC,yBAAyB;IAChE;;OAEG;IACH,+BAA+B,EAAE,oCAAW,CAAC,+BAA+B;IAC5E;;OAEG;IACH,2BAA2B,EAAE,oCAAW,CAAC,2BAA2B;IACpE;;OAEG;IACH,iCAAiC,EAAE,oCAAW,CAAC,iCAAiC;IAChF;;OAEG;IACH,+BAA+B,EAAE,oCAAW,CAAC,+BAA+B;IAC5E;;OAEG;IACH,qCAAqC,EAAE,oCAAW,CAAC,qCAAqC;IACxF;;OAEG;IACH,qBAAqB,EAAE,oCAAW,CAAC,qBAAqB;IACxD;OACG;IACH,8EAA8E;IAC9E;OACG;IACH,mEAAmE;CACtE,CAAC"}
@@ -1,10 +1,12 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
2
4
  /**
3
5
  * @module node-opcua-transport
4
6
  */
5
7
  import { EventEmitter } from "events";
6
8
  import { Socket } from "net";
7
- import { ErrorCallback, CallbackWithData } from "node-opcua-status-code";
9
+ import { ErrorCallback, CallbackWithData, StatusCode } from "node-opcua-status-code";
8
10
  export interface MockSocket {
9
11
  invalid?: boolean;
10
12
  [key: string]: any;
@@ -14,10 +16,10 @@ export interface MockSocket {
14
16
  export declare function setFakeTransport(mockSocket: MockSocket): void;
15
17
  export declare function getFakeTransport(): any;
16
18
  export interface TCP_transport {
17
- on(eventName: "message", eventHandler: (message: Buffer) => void): this;
19
+ on(eventName: "chunk", eventHandler: (messageChunk: Buffer) => void): this;
18
20
  on(eventName: "socket_closed", eventHandler: (err: Error | null) => void): this;
19
21
  on(eventName: "close", eventHandler: (err: Error | null) => void): this;
20
- once(eventName: "message", eventHandler: (message: Buffer) => void): this;
22
+ once(eventName: "chunk", eventHandler: (messageChunk: Buffer) => void): this;
21
23
  once(eventName: "socket_closed", eventHandler: (err: Error | null) => void): this;
22
24
  once(eventName: "close", eventHandler: (err: Error | null) => void): this;
23
25
  }
@@ -28,6 +30,10 @@ export declare class TCP_transport extends EventEmitter {
28
30
  * @default 0
29
31
  */
30
32
  protocolVersion: number;
33
+ maxMessageSize: number;
34
+ maxChunkCount: number;
35
+ sendBufferSize: number;
36
+ receiveBufferSize: number;
31
37
  bytesWritten: number;
32
38
  bytesRead: number;
33
39
  chunkWrittenCount: number;
@@ -45,39 +51,24 @@ export declare class TCP_transport extends EventEmitter {
45
51
  private _onSocketEndedHasBeenCalled;
46
52
  private _theCallback?;
47
53
  private _on_error_during_one_time_message_receiver;
48
- private _pendingBuffer?;
49
54
  private packetAssembler?;
50
55
  private _timeout;
51
56
  constructor();
57
+ setLimits({ receiveBufferSize, sendBufferSize, maxMessageSize, maxChunkCount }: {
58
+ receiveBufferSize: number;
59
+ sendBufferSize: number;
60
+ maxMessageSize: number;
61
+ maxChunkCount: number;
62
+ }): void;
52
63
  get timeout(): number;
53
64
  set timeout(value: number);
54
65
  dispose(): void;
55
- /**
56
- * ```createChunk``` is used to construct a pre-allocated chunk to store up to ```length``` bytes of data.
57
- * The created chunk includes a prepended header for ```chunk_type``` of size ```self.headerSize```.
58
- *
59
- * @method createChunk
60
- * @param msgType
61
- * @param chunkType {String} chunk type. should be 'F' 'C' or 'A'
62
- * @param length
63
- * @return a buffer object with the required length representing the chunk.
64
- *
65
- * Note:
66
- * - only one chunk can be created at a time.
67
- * - a created chunk should be committed using the ```write``` method before an other one is created.
68
- */
69
- createChunk(msgType: string, chunkType: string, length: number): Buffer;
70
66
  /**
71
67
  * write the message_chunk on the socket.
72
68
  * @method write
73
69
  * @param messageChunk
74
- *
75
- * Notes:
76
- * - the message chunk must have been created by ```createChunk```.
77
- * - once a message chunk has been written, it is possible to call ```createChunk``` again.
78
- *
79
70
  */
80
- write(messageChunk: Buffer): void;
71
+ write(messageChunk: Buffer, callback?: (err?: Error) => void | undefined): void;
81
72
  get isDisconnecting(): boolean;
82
73
  /**
83
74
  * disconnect the TCP layer and close the underlying socket.
@@ -89,15 +80,17 @@ export declare class TCP_transport extends EventEmitter {
89
80
  */
90
81
  disconnect(callback: ErrorCallback): void;
91
82
  isValid(): boolean;
92
- protected _write_chunk(messageChunk: Buffer): void;
83
+ protected _write_chunk(messageChunk: Buffer, callback?: (err?: Error) => void | undefined): void;
93
84
  protected on_socket_ended(err: Error | null): void;
85
+ protected _install_packetAssembler(): void;
94
86
  /**
95
87
  * @method _install_socket
96
88
  * @param socket {Socket}
97
89
  * @protected
98
90
  */
99
91
  protected _install_socket(socket: Socket): void;
100
- prematureTerminate(err: Error): void;
92
+ sendErrorMessage(statusCode: StatusCode, extraErrorDescription: string | null): void;
93
+ prematureTerminate(err: Error, statusCode: StatusCode): void;
101
94
  /**
102
95
  * @method _install_one_time_message_receiver
103
96
  *
@@ -114,7 +107,7 @@ export declare class TCP_transport extends EventEmitter {
114
107
  */
115
108
  protected _install_one_time_message_receiver(callback: CallbackWithData): void;
116
109
  private _fulfill_pending_promises;
117
- private _on_message_received;
110
+ private _on_message_chunk_received;
118
111
  private _cleanup_timers;
119
112
  private _start_one_time_message_receiver;
120
113
  private on_socket_closed;
@@ -7,15 +7,17 @@ exports.TCP_transport = exports.getFakeTransport = exports.setFakeTransport = vo
7
7
  const events_1 = require("events");
8
8
  const chalk = require("chalk");
9
9
  const node_opcua_assert_1 = require("node-opcua-assert");
10
- const node_opcua_buffer_utils_1 = require("node-opcua-buffer-utils");
11
- const debug = require("node-opcua-debug");
10
+ const node_opcua_debug_1 = require("node-opcua-debug");
12
11
  const node_opcua_object_registry_1 = require("node-opcua-object-registry");
13
12
  const node_opcua_packet_assembler_1 = require("node-opcua-packet-assembler");
13
+ const status_codes_1 = require("./status_codes");
14
14
  const message_builder_base_1 = require("./message_builder_base");
15
+ const utils_1 = require("./utils");
16
+ const TCPErrorMessage_1 = require("./TCPErrorMessage");
15
17
  const tools_1 = require("./tools");
16
- const debugLog = debug.make_debugLog(__filename);
17
- const doDebug = debug.checkDebugFlag(__filename);
18
- const errorLog = debug.make_errorLog(__filename);
18
+ const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
19
+ const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
20
+ const errorLog = (0, node_opcua_debug_1.make_errorLog)(__filename);
19
21
  let fakeSocket = {
20
22
  invalid: true,
21
23
  destroy() {
@@ -47,9 +49,12 @@ class TCP_transport extends events_1.EventEmitter {
47
49
  this._timeout = 30000; // 30 seconds timeout
48
50
  this._socket = null;
49
51
  this.headerSize = 8;
52
+ this.maxMessageSize = 0;
53
+ this.maxChunkCount = 0;
54
+ this.receiveBufferSize = 0;
55
+ this.sendBufferSize = 0;
50
56
  this.protocolVersion = 0;
51
57
  this._disconnecting = false;
52
- this._pendingBuffer = undefined;
53
58
  this.bytesWritten = 0;
54
59
  this.bytesRead = 0;
55
60
  this._theCallback = undefined;
@@ -59,6 +64,14 @@ class TCP_transport extends events_1.EventEmitter {
59
64
  this._onSocketEndedHasBeenCalled = false;
60
65
  TCP_transport.registry.register(this);
61
66
  }
67
+ setLimits({ receiveBufferSize, sendBufferSize, maxMessageSize, maxChunkCount }) {
68
+ this.receiveBufferSize = receiveBufferSize;
69
+ this.sendBufferSize = sendBufferSize;
70
+ this.maxMessageSize = maxMessageSize;
71
+ this.maxChunkCount = maxChunkCount;
72
+ // reinstall packetAssembler with correct limits
73
+ this._install_packetAssembler();
74
+ }
62
75
  get timeout() {
63
76
  return this._timeout;
64
77
  }
@@ -76,46 +89,19 @@ class TCP_transport extends events_1.EventEmitter {
76
89
  }
77
90
  TCP_transport.registry.unregister(this);
78
91
  }
79
- /**
80
- * ```createChunk``` is used to construct a pre-allocated chunk to store up to ```length``` bytes of data.
81
- * The created chunk includes a prepended header for ```chunk_type``` of size ```self.headerSize```.
82
- *
83
- * @method createChunk
84
- * @param msgType
85
- * @param chunkType {String} chunk type. should be 'F' 'C' or 'A'
86
- * @param length
87
- * @return a buffer object with the required length representing the chunk.
88
- *
89
- * Note:
90
- * - only one chunk can be created at a time.
91
- * - a created chunk should be committed using the ```write``` method before an other one is created.
92
- */
93
- createChunk(msgType, chunkType, length) {
94
- (0, node_opcua_assert_1.assert)(msgType === "MSG");
95
- (0, node_opcua_assert_1.assert)(this._pendingBuffer === undefined, "createChunk has already been called ( use write first)");
96
- const totalLength = length + this.headerSize;
97
- const buffer = (0, node_opcua_buffer_utils_1.createFastUninitializedBuffer)(totalLength);
98
- (0, tools_1.writeTCPMessageHeader)("MSG", chunkType, totalLength, buffer);
99
- this._pendingBuffer = buffer;
100
- return buffer;
101
- }
102
92
  /**
103
93
  * write the message_chunk on the socket.
104
94
  * @method write
105
95
  * @param messageChunk
106
- *
107
- * Notes:
108
- * - the message chunk must have been created by ```createChunk```.
109
- * - once a message chunk has been written, it is possible to call ```createChunk``` again.
110
- *
111
96
  */
112
- write(messageChunk) {
113
- (0, node_opcua_assert_1.assert)(this._pendingBuffer === undefined || this._pendingBuffer === messageChunk, " write should be used with buffer created by createChunk");
97
+ write(messageChunk, callback) {
114
98
  const header = (0, message_builder_base_1.readRawMessageHeader)(messageChunk);
115
99
  (0, node_opcua_assert_1.assert)(header.length === messageChunk.length);
116
- (0, node_opcua_assert_1.assert)(["F", "C", "A"].indexOf(header.messageHeader.isFinal) !== -1);
117
- this._write_chunk(messageChunk);
118
- this._pendingBuffer = undefined;
100
+ const c = header.messageHeader.isFinal;
101
+ (0, node_opcua_assert_1.assert)(c === "F" || c === "C" || c === "A");
102
+ this._write_chunk(messageChunk, (err) => {
103
+ callback && callback(err);
104
+ });
119
105
  }
120
106
  get isDisconnecting() {
121
107
  return this._disconnecting;
@@ -153,11 +139,16 @@ class TCP_transport extends events_1.EventEmitter {
153
139
  isValid() {
154
140
  return this._socket !== null && !this._socket.destroyed && !this._disconnecting;
155
141
  }
156
- _write_chunk(messageChunk) {
142
+ _write_chunk(messageChunk, callback) {
157
143
  if (this._socket !== null) {
158
144
  this.bytesWritten += messageChunk.length;
159
145
  this.chunkWrittenCount++;
160
- this._socket.write(messageChunk);
146
+ this._socket.write(messageChunk, callback);
147
+ }
148
+ else {
149
+ if (callback) {
150
+ callback();
151
+ }
161
152
  }
162
153
  }
163
154
  on_socket_ended(err) {
@@ -170,6 +161,31 @@ class TCP_transport extends events_1.EventEmitter {
170
161
  */
171
162
  this.emit("close", err || null);
172
163
  }
164
+ _install_packetAssembler() {
165
+ if (this.packetAssembler) {
166
+ this.packetAssembler.removeAllListeners();
167
+ this.packetAssembler = undefined;
168
+ }
169
+ // install packet assembler ...
170
+ this.packetAssembler = new node_opcua_packet_assembler_1.PacketAssembler({
171
+ readChunkFunc: message_builder_base_1.readRawMessageHeader,
172
+ minimumSizeInBytes: this.headerSize,
173
+ maxChunkSize: this.receiveBufferSize //Math.max(this.receiveBufferSize, this.sendBufferSize)
174
+ });
175
+ this.packetAssembler.on("chunk", (chunk) => this._on_message_chunk_received(chunk));
176
+ this.packetAssembler.on("error", (err, code) => {
177
+ let statusCode = status_codes_1.StatusCodes2.BadTcpMessageTooLarge;
178
+ switch (code) {
179
+ case node_opcua_packet_assembler_1.PacketAssemblerErrorCode.ChunkSizeExceeded:
180
+ statusCode = status_codes_1.StatusCodes2.BadTcpMessageTooLarge;
181
+ break;
182
+ default:
183
+ statusCode = status_codes_1.StatusCodes2.BadTcpInternalError;
184
+ }
185
+ this.sendErrorMessage(statusCode, err.message);
186
+ this.prematureTerminate(new Error("Packet Assembler : " + err.message), statusCode);
187
+ });
188
+ }
173
189
  /**
174
190
  * @method _install_socket
175
191
  * @param socket {Socket}
@@ -181,16 +197,7 @@ class TCP_transport extends events_1.EventEmitter {
181
197
  if (doDebug) {
182
198
  debugLog(" TCP_transport#_install_socket ", this.name);
183
199
  }
184
- // install packet assembler ...
185
- this.packetAssembler = new node_opcua_packet_assembler_1.PacketAssembler({
186
- readMessageFunc: message_builder_base_1.readRawMessageHeader,
187
- minimumSizeInBytes: this.headerSize
188
- });
189
- /* istanbul ignore next */
190
- if (!this.packetAssembler) {
191
- throw new Error("Internal Error");
192
- }
193
- this.packetAssembler.on("message", (messageChunk) => this._on_message_received(messageChunk));
200
+ this._install_packetAssembler();
194
201
  this._socket
195
202
  .on("data", (data) => this._on_socket_data(data))
196
203
  .on("close", (hadError) => this._on_socket_close(hadError))
@@ -201,13 +208,30 @@ class TCP_transport extends events_1.EventEmitter {
201
208
  // let use a large timeout here to make sure that we not conflict with our internal timeout
202
209
  this._socket.setTimeout(this.timeout + 2000, () => {
203
210
  debugLog(` _socket ${this.name} has timed out (timeout = ${this.timeout})`);
204
- this.prematureTerminate(new Error("socket timeout : timeout=" + this.timeout));
211
+ this.prematureTerminate(new Error("socket timeout : timeout=" + this.timeout), status_codes_1.StatusCodes2.BadTimeout);
205
212
  });
206
213
  }
207
- prematureTerminate(err) {
208
- debugLog("prematureTerminate", err ? err.message : "");
214
+ sendErrorMessage(statusCode, extraErrorDescription) {
215
+ // When the Client receives an Error Message it reports the error to the application and closes the TransportConnection gracefully.
216
+ // If a Client encounters a fatal error, it shall report the error to the application and send a CloseSecureChannel Message.
217
+ /* istanbul ignore next*/
218
+ if (doDebug) {
219
+ debugLog(chalk.red(" sendErrorMessage ") + chalk.cyan(statusCode.toString()));
220
+ debugLog(chalk.red(" extraErrorDescription ") + chalk.cyan(extraErrorDescription));
221
+ }
222
+ const reason = `${statusCode.toString()}:${extraErrorDescription || ""}`;
223
+ const errorResponse = new TCPErrorMessage_1.TCPErrorMessage({
224
+ statusCode,
225
+ reason
226
+ });
227
+ const messageChunk = (0, tools_1.packTcpMessage)("ERR", errorResponse);
228
+ this.write(messageChunk);
229
+ }
230
+ prematureTerminate(err, statusCode) {
231
+ // https://reference.opcfoundation.org/v104/Core/docs/Part6/6.7.3/
232
+ debugLog("prematureTerminate", err ? err.message : "", statusCode.toString());
209
233
  if (this._socket) {
210
- err.message = "socket has timeout: EPIPE: " + err.message;
234
+ err.message = "premature socket termination " + err.message;
211
235
  // we consider this as an error
212
236
  const _s = this._socket;
213
237
  _s.end();
@@ -217,6 +241,7 @@ class TCP_transport extends events_1.EventEmitter {
217
241
  this.dispose();
218
242
  _s.removeAllListeners();
219
243
  }
244
+ // this.gracefullShutdown(err);
220
245
  }
221
246
  /**
222
247
  * @method _install_one_time_message_receiver
@@ -252,7 +277,10 @@ class TCP_transport extends events_1.EventEmitter {
252
277
  }
253
278
  return false;
254
279
  }
255
- _on_message_received(messageChunk) {
280
+ _on_message_chunk_received(messageChunk) {
281
+ if (utils_1.doTraceIncomingChunk) {
282
+ console.log((0, node_opcua_debug_1.hexDump)(messageChunk));
283
+ }
256
284
  const hadCallback = this._fulfill_pending_promises(null, messageChunk);
257
285
  this.chunkReadCount++;
258
286
  if (!hadCallback) {
@@ -261,7 +289,7 @@ class TCP_transport extends events_1.EventEmitter {
261
289
  * @event message
262
290
  * @param message_chunk the message chunk
263
291
  */
264
- this.emit("message", messageChunk);
292
+ this.emit("chunk", messageChunk);
265
293
  }
266
294
  }
267
295
  _cleanup_timers() {
@@ -300,6 +328,7 @@ class TCP_transport extends events_1.EventEmitter {
300
328
  this.emit("socket_closed", err || null);
301
329
  }
302
330
  _on_socket_data(data) {
331
+ // istanbul ignore next
303
332
  if (!this.packetAssembler) {
304
333
  throw new Error("internal Error");
305
334
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tcp_transport.js","sourceRoot":"","sources":["../../source/tcp_transport.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,mCAAsC;AAGtC,+BAA+B;AAE/B,yDAA2C;AAC3C,qEAAwE;AACxE,0CAA0C;AAC1C,2EAA4D;AAC5D,6EAA8D;AAG9D,iEAA8D;AAC9D,mCAAgD;AAEhD,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACjD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAQjD,IAAI,UAAU,GAAe;IACzB,OAAO,EAAE,IAAI;IAEb,OAAO;QACH,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACnC,CAAC;IAED,GAAG;QACC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;CACJ,CAAC;AAEF,SAAgB,gBAAgB,CAAC,UAAsB;IACnD,UAAU,GAAG,UAAU,CAAC;AAC5B,CAAC;AAFD,4CAEC;AAED,SAAgB,gBAAgB;IAC5B,IAAI,UAAU,CAAC,OAAO,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;KAC/G;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AALD,4CAKC;AAED,IAAI,OAAO,GAAG,CAAC,CAAC;AAWhB,4BAA4B;AAC5B,MAAa,aAAc,SAAQ,qBAAY;IAgC3C;QACI,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC;QAC5C,OAAO,IAAI,CAAC,CAAC;QAEb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,qBAAqB;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAEhC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;QAC1C,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;QACzC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD,IAAW,OAAO,CAAC,KAAa;QAC5B,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,GAAG,aAAa,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IACM,OAAO;QACV,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;QACD,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,WAAW,CAAC,OAAe,EAAE,SAAiB,EAAE,MAAc;QACjE,IAAA,0BAAM,EAAC,OAAO,KAAK,KAAK,CAAC,CAAC;QAC1B,IAAA,0BAAM,EAAC,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,wDAAwD,CAAC,CAAC;QAEpG,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAA,uDAA6B,EAAC,WAAW,CAAC,CAAC;QAC1D,IAAA,6BAAqB,EAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAE7B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,YAAoB;QAC7B,IAAA,0BAAM,EACF,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,YAAY,EACzE,0DAA0D,CAC7D,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,2CAAoB,EAAC,YAAY,CAAC,CAAC;QAClD,IAAA,0BAAM,EAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAA,0BAAM,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IACpC,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD;;;;;;;OAOG;IACI,UAAU,CAAC,QAAuB;QACrC,IAAA,0BAAM,EAAC,OAAO,QAAQ,KAAK,UAAU,EAAE,yCAAyC,GAAG,QAAQ,CAAC,CAAC;QAE7F,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,QAAQ,EAAE,CAAC;YACX,OAAO;SACV;QAED,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,cAAc,EAAE,6CAA6C,CAAC,CAAC;QAC5E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,gCAAgC;QAChC,wGAAwG;QACxG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvC,wCAAwC;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,YAAY,CAAC,GAAG,EAAE;YACd,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IACpF,CAAC;IAES,YAAY,CAAC,YAAoB;QACvC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SACpC;IACL,CAAC;IAES,eAAe,CAAC,GAAiB;QACvC,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAAC,8CAA8C;QACvF;;;;WAIG;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACO,eAAe,CAAC,MAAc;QACpC,IAAA,0BAAM,EAAC,MAAM,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3D;QAED,+BAA+B;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,6CAAe,CAAC;YACvC,eAAe,EAAE,2CAAoB;YAErC,kBAAkB,EAAE,IAAI,CAAC,UAAU;SACtC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,YAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;QAEtG,IAAI,CAAC,OAAO;aACP,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aACxD,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aAC1D,EAAE,CAAC,KAAK,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;aACnD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,qBAAqB;QACrB,QAAQ,CAAC,qCAAqC,GAAG,IAAI,CAAC,IAAI,GAAG,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtG,2FAA2F;QAC3F,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,GAAG,EAAE;YAC/C,QAAQ,CAAC,YAAY,IAAI,CAAC,IAAI,6BAA6B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YAC5E,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,kBAAkB,CAAC,GAAU;QAChC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,GAAG,CAAC,OAAO,GAAG,6BAA6B,GAAG,GAAG,CAAC,OAAO,CAAC;YAC1D,+BAA+B;YAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACxB,EAAE,CAAC,GAAG,EAAE,CAAC;YACT,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,sCAAsC;YACpD,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,EAAE,CAAC,kBAAkB,EAAE,CAAC;SAC3B;IACL,CAAC;IACD;;;;;;;;;;;;;OAaG;IACO,kCAAkC,CAAC,QAA0B;QACnE,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;QACnD,IAAA,0BAAM,EAAC,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,gCAAgC,EAAE,CAAC;IAC5C,CAAC;IAEO,yBAAyB,CAAC,GAAiB,EAAE,IAAa;QAC9D,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,0CAA0C,EAAE;YACjE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACtF,IAAI,CAAC,0CAA0C,GAAG,IAAI,CAAC;SAC1D;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAE9B,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,oBAAoB,CAAC,YAAoB;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACvE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE;YACd;;;;eAIG;YACH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;SACtC;IACL,CAAC;IAEO,eAAe;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;IACL,CAAC;IAEO,gCAAgC;QACpC,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;QAEhD,qCAAqC;QACrC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,yBAAyB,CAAC,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC;QAC3H,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjB,iBAAiB;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,yCAAyC;YACzC,IAAI,CAAC,0CAA0C,GAAG,CAAC,GAAW,EAAE,EAAE;gBAC9D,IAAI,CAAC,yBAAyB,CAC1B,IAAI,KAAK,CAAC,uDAAuD,IAAI,CAAC,OAAO,OAAO,IAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAA,CAAC,CACvG,CAAC;YACN,CAAC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,0CAA0C,CAAC,CAAC;SAC7E;IACL,CAAC;IAEO,gBAAgB,CAAC,GAAW;QAChC,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACnC,OAAO;SACV;QACD,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC,8CAA8C;QACxF;;;;WAIG;QACH,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEO,eAAe,CAAC,IAAY;QAChC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnC;IACL,CAAC;IAEO,gBAAgB,CAAC,QAAiB;QACtC,uBAAuB;QACvB,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACpH;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,QAAQ,CACJ,qBAAqB,EACrB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,GAAG,EACH,IAAI,CAAC,OAAO,CAAC,YAAY,EACzB,GAAG,EACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAC1B,CAAC;SACL;QACD,IAAI,QAAQ,EAAE;YACV,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;SACJ;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,wBAAwB,CAAC,GAAW;QACxC,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,OAAO;SACV;QAED,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7B,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAEvE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,yBAAyB,CAAC,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IAEO,cAAc,CAAC,GAAU;QAC7B,uBAAuB;QACvB,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAClG;QACD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAEO,gBAAgB,CAAC,GAAU;QAC/B,uBAAuB;QACvB,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACjF;QACD,uEAAuE;IAC3E,CAAC;;AAlZL,sCAmZC;AAlZkB,sBAAQ,GAAG,IAAI,2CAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"tcp_transport.js","sourceRoot":"","sources":["../../source/tcp_transport.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,mCAAsC;AAEtC,+BAA+B;AAE/B,yDAA2C;AAE3C,uDAAyF;AACzF,2EAA4D;AAC5D,6EAAwF;AAGxF,iDAA8C;AAC9C,iEAA8D;AAC9D,mCAA+C;AAC/C,uDAAoD;AACpD,mCAAyC;AAEzC,MAAM,QAAQ,GAAG,IAAA,gCAAa,EAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,OAAO,GAAG,IAAA,iCAAc,EAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,QAAQ,GAAG,IAAA,gCAAa,EAAC,UAAU,CAAC,CAAC;AAQ3C,IAAI,UAAU,GAAe;IACzB,OAAO,EAAE,IAAI;IAEb,OAAO;QACH,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACnC,CAAC;IAED,GAAG;QACC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;CACJ,CAAC;AAEF,SAAgB,gBAAgB,CAAC,UAAsB;IACnD,UAAU,GAAG,UAAU,CAAC;AAC5B,CAAC;AAFD,4CAEC;AAED,SAAgB,gBAAgB;IAC5B,IAAI,UAAU,CAAC,OAAO,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;KAC/G;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AALD,4CAKC;AAED,IAAI,OAAO,GAAG,CAAC,CAAC;AAWhB,4BAA4B;AAC5B,MAAa,aAAc,SAAQ,qBAAY;IAmC3C;QACI,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC;QAC5C,OAAO,IAAI,CAAC,CAAC;QAEb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,qBAAqB;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAE5B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;QAC1C,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;QACzC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEM,SAAS,CAAC,EACb,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,aAAa,EAMhB;QACG,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,gDAAgD;QAChD,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD,IAAW,OAAO,CAAC,KAAa;QAC5B,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,GAAG,aAAa,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IACM,OAAO;QACV,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;QACD,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAoB,EAAE,QAA4C;QAC3E,MAAM,MAAM,GAAG,IAAA,2CAAoB,EAAC,YAAY,CAAC,CAAC;QAClD,IAAA,0BAAM,EAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;QACvC,IAAA,0BAAM,EAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;YACpC,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD;;;;;;;OAOG;IACI,UAAU,CAAC,QAAuB;QACrC,IAAA,0BAAM,EAAC,OAAO,QAAQ,KAAK,UAAU,EAAE,yCAAyC,GAAG,QAAQ,CAAC,CAAC;QAE7F,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,QAAQ,EAAE,CAAC;YACX,OAAO;SACV;QAED,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,cAAc,EAAE,6CAA6C,CAAC,CAAC;QAC5E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,gCAAgC;QAChC,wGAAwG;QACxG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvC,wCAAwC;YACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,YAAY,CAAC,GAAG,EAAE;YACd,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IACpF,CAAC;IAES,YAAY,CAAC,YAAoB,EAAE,QAA4C;QACrF,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;SAC9C;aAAM;YACH,IAAI,QAAQ,EAAE;gBACV,QAAQ,EAAE,CAAC;aACd;SACJ;IACL,CAAC;IAES,eAAe,CAAC,GAAiB;QACvC,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAAC,8CAA8C;QACvF;;;;WAIG;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IACpC,CAAC;IAES,wBAAwB;QAC9B,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;YAC1C,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;SACpC;QAED,+BAA+B;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,6CAAe,CAAC;YACvC,aAAa,EAAE,2CAAoB;YACnC,kBAAkB,EAAE,IAAI,CAAC,UAAU;YACnC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,uDAAuD;SAC/F,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5F,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC3C,IAAI,UAAU,GAAG,2BAAY,CAAC,qBAAqB,CAAC;YACpD,QAAQ,IAAI,EAAE;gBACV,KAAK,sDAAwB,CAAC,iBAAiB;oBAC3C,UAAU,GAAG,2BAAY,CAAC,qBAAqB,CAAC;oBAChD,MAAM;gBACV;oBACI,UAAU,GAAG,2BAAY,CAAC,mBAAmB,CAAC;aACrD;YAED,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACP,CAAC;IACD;;;;OAIG;IACO,eAAe,CAAC,MAAc;QACpC,IAAA,0BAAM,EAAC,MAAM,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3D;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,OAAO;aACP,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aACxD,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;aAC1D,EAAE,CAAC,KAAK,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;aACnD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,qBAAqB;QACrB,QAAQ,CAAC,qCAAqC,GAAG,IAAI,CAAC,IAAI,GAAG,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtG,2FAA2F;QAC3F,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,GAAG,EAAE;YAC/C,QAAQ,CAAC,YAAY,IAAI,CAAC,IAAI,6BAA6B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YAC5E,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,2BAAY,CAAC,UAAU,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,gBAAgB,CAAC,UAAsB,EAAE,qBAAoC;QAChF,mIAAmI;QACnI,4HAA4H;QAE5H,yBAAyB;QACzB,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACrF,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;SACxF;QAED,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,qBAAqB,IAAI,EAAE,EAAE,CAAC;QACzE,MAAM,aAAa,GAAG,IAAI,iCAAe,CAAC;YACtC,UAAU;YACV,MAAM;SACT,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAA,sBAAc,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAEM,kBAAkB,CAAC,GAAU,EAAE,UAAsB;QACxD,kEAAkE;QAElE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE9E,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,GAAG,CAAC,OAAO,GAAG,+BAA+B,GAAG,GAAG,CAAC,OAAO,CAAC;YAC5D,+BAA+B;YAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACxB,EAAE,CAAC,GAAG,EAAE,CAAC;YACT,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,sCAAsC;YACpD,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,EAAE,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QACD,+BAA+B;IACnC,CAAC;IACD;;;;;;;;;;;;;OAaG;IACO,kCAAkC,CAAC,QAA0B;QACnE,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;QACnD,IAAA,0BAAM,EAAC,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,gCAAgC,EAAE,CAAC;IAC5C,CAAC;IAEO,yBAAyB,CAAC,GAAiB,EAAE,IAAa;QAC9D,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,0CAA0C,EAAE;YACjE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACtF,IAAI,CAAC,0CAA0C,GAAG,IAAI,CAAC;SAC1D;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAE9B,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,0BAA0B,CAAC,YAAoB;QACnD,IAAI,4BAAoB,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,IAAA,0BAAO,EAAC,YAAY,CAAC,CAAC,CAAC;SACtC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACvE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE;YACd;;;;eAIG;YACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;SACpC;IACL,CAAC;IAEO,eAAe;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;IACL,CAAC;IAEO,gCAAgC;QACpC,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;QAEhD,qCAAqC;QACrC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,yBAAyB,CAAC,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC;QAC3H,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjB,iBAAiB;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,yCAAyC;YACzC,IAAI,CAAC,0CAA0C,GAAG,CAAC,GAAW,EAAE,EAAE;gBAC9D,IAAI,CAAC,yBAAyB,CAC1B,IAAI,KAAK,CAAC,uDAAuD,IAAI,CAAC,OAAO,OAAO,IAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAA,CAAC,CACvG,CAAC;YACN,CAAC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,0CAA0C,CAAC,CAAC;SAC7E;IACL,CAAC;IAEO,gBAAgB,CAAC,GAAW;QAChC,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACnC,OAAO;SACV;QACD,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC,8CAA8C;QACxF;;;;WAIG;QACH,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEO,eAAe,CAAC,IAAY;QAChC,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnC;IACL,CAAC;IAEO,gBAAgB,CAAC,QAAiB;QACtC,uBAAuB;QACvB,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACpH;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,QAAQ,CACJ,qBAAqB,EACrB,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,GAAG,EACH,IAAI,CAAC,OAAO,CAAC,YAAY,EACzB,GAAG,EACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAC1B,CAAC;SACL;QACD,IAAI,QAAQ,EAAE;YACV,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;SACJ;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,wBAAwB,CAAC,GAAW;QACxC,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,OAAO;SACV;QAED,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAA,0BAAM,EAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7B,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAEvE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,yBAAyB,CAAC,IAAI,KAAK,CAAC,yCAAyC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IAEO,cAAc,CAAC,GAAU;QAC7B,uBAAuB;QACvB,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAClG;QACD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAEO,gBAAgB,CAAC,GAAU;QAC/B,uBAAuB;QACvB,IAAI,OAAO,EAAE;YACT,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACjF;QACD,uEAAuE;IAC3E,CAAC;;AA7bL,sCA8bC;AA7bkB,sBAAQ,GAAG,IAAI,2CAAc,EAAE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  /**
3
4
  * @module node-opcua-transport
4
5
  */
@@ -1,2 +1,3 @@
1
- export declare const doTraceHelloAck: RegExpMatchArray | null;
2
- export declare const doTraceChunk: RegExpMatchArray | null;
1
+ export declare const doTraceHelloAck: boolean;
2
+ export declare const doTraceChunk: boolean;
3
+ export declare const doTraceIncomingChunk: boolean;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  var _a, _b;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.doTraceChunk = exports.doTraceHelloAck = void 0;
4
+ exports.doTraceIncomingChunk = exports.doTraceChunk = exports.doTraceHelloAck = void 0;
5
5
  //
6
6
  const transportFlag = (((_b = (_a = process.env) === null || _a === void 0 ? void 0 : _a.NODEOPCUADEBUG) === null || _b === void 0 ? void 0 : _b.match(/TRANSPORT{([^}]*)}/)) || [])[1] || "";
7
- exports.doTraceHelloAck = transportFlag.match(/HELACK/);
8
- exports.doTraceChunk = transportFlag.match(/CHUNK/);
7
+ exports.doTraceHelloAck = !!transportFlag.match(/HELACK/);
8
+ exports.doTraceChunk = !!transportFlag.match(/CHUNK/);
9
+ exports.doTraceIncomingChunk = !!transportFlag.match(/FLOW/);
9
10
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../source/utils.ts"],"names":[],"mappings":";;;;AAAA,EAAE;AACF,MAAM,aAAa,GAAG,CAAC,CAAA,MAAA,MAAA,OAAO,CAAC,GAAG,0CAAE,cAAc,0CAAE,KAAK,CAAC,oBAAoB,CAAC,KAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnF,QAAA,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChD,QAAA,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../source/utils.ts"],"names":[],"mappings":";;;;AAAA,EAAE;AACF,MAAM,aAAa,GAAG,CAAC,CAAA,MAAA,MAAA,OAAO,CAAC,GAAG,0CAAE,cAAc,0CAAE,KAAK,CAAC,oBAAoB,CAAC,KAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnF,QAAA,eAAe,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClD,QAAA,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,QAAA,oBAAoB,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC"}