node-opcua-transport 2.99.0 → 2.102.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 (36) hide show
  1. package/dist/source/client_tcp_transport.d.ts +4 -9
  2. package/dist/source/client_tcp_transport.js +38 -71
  3. package/dist/source/client_tcp_transport.js.map +1 -1
  4. package/dist/source/server_tcp_transport.d.ts +3 -15
  5. package/dist/source/server_tcp_transport.js +40 -41
  6. package/dist/source/server_tcp_transport.js.map +1 -1
  7. package/dist/source/tcp_transport.d.ts +45 -28
  8. package/dist/source/tcp_transport.js +160 -110
  9. package/dist/source/tcp_transport.js.map +1 -1
  10. package/dist/test_helpers/ITransportPair.d.ts +7 -0
  11. package/dist/test_helpers/ITransportPair.js +3 -0
  12. package/dist/test_helpers/ITransportPair.js.map +1 -0
  13. package/dist/test_helpers/fake_server.d.ts +2 -0
  14. package/dist/test_helpers/fake_server.js +3 -0
  15. package/dist/test_helpers/fake_server.js.map +1 -1
  16. package/dist/test_helpers/half_com_channel.d.ts +17 -10
  17. package/dist/test_helpers/half_com_channel.js +63 -4
  18. package/dist/test_helpers/half_com_channel.js.map +1 -1
  19. package/dist/test_helpers/index.d.ts +2 -2
  20. package/dist/test_helpers/index.js +2 -2
  21. package/dist/test_helpers/index.js.map +1 -1
  22. package/dist/test_helpers/{direct_transport.d.ts → transport_pair_direct.d.ts} +2 -6
  23. package/dist/test_helpers/{direct_transport.js → transport_pair_direct.js} +11 -18
  24. package/dist/test_helpers/transport_pair_direct.js.map +1 -0
  25. package/dist/test_helpers/transport_pair_socket.d.ts +14 -0
  26. package/dist/test_helpers/transport_pair_socket.js +33 -0
  27. package/dist/test_helpers/transport_pair_socket.js.map +1 -0
  28. package/dist/tsconfig.tsbuildinfo +1 -1
  29. package/package.json +3 -2
  30. package/source/client_tcp_transport.ts +56 -89
  31. package/source/server_tcp_transport.ts +48 -50
  32. package/source/tcp_transport.ts +226 -157
  33. package/dist/test_helpers/direct_transport.js.map +0 -1
  34. package/dist/test_helpers/socket_transport.d.ts +0 -10
  35. package/dist/test_helpers/socket_transport.js +0 -31
  36. package/dist/test_helpers/socket_transport.js.map +0 -1
@@ -1,20 +1,50 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- /// <reference types="node" />
4
3
  /**
5
4
  * @module node-opcua-transport
6
5
  */
7
6
  import { EventEmitter } from "events";
8
- import { Socket } from "net";
9
7
  import { ErrorCallback, CallbackWithData, StatusCode } from "node-opcua-status-code";
10
- export interface MockSocket {
8
+ export interface ISocketLike extends EventEmitter {
9
+ remoteAddress?: string;
10
+ remotePort?: number;
11
+ write(data: string | Buffer, callback?: (err?: Error) => void | undefined): void;
12
+ end(): void;
13
+ setKeepAlive(enable?: boolean, initialDelay?: number): this;
14
+ setNoDelay(noDelay?: boolean): this;
15
+ setTimeout(timeout: number, callback?: () => void): this;
16
+ destroy(err?: Error): void;
17
+ destroyed: boolean;
18
+ on(event: "close", listener: (hadError: boolean) => void): this;
19
+ on(event: "connect", listener: () => void): this;
20
+ on(event: "data", listener: (data: Buffer) => void): this;
21
+ on(event: "end", listener: () => void): this;
22
+ on(event: "error", listener: (err: Error) => void): this;
23
+ on(event: "timeout", listener: () => void): this;
24
+ once(event: "close", listener: (hadError: boolean) => void): this;
25
+ once(event: "connect", listener: () => void): this;
26
+ once(event: "data", listener: (data: Buffer) => void): this;
27
+ once(event: "end", listener: () => void): this;
28
+ once(event: "error", listener: (err: Error) => void): this;
29
+ once(event: "timeout", listener: () => void): this;
30
+ prependListener(event: "close", listener: (hadError: boolean) => void): this;
31
+ prependListener(event: "connect", listener: () => void): this;
32
+ prependListener(event: "data", listener: (data: Buffer) => void): this;
33
+ prependListener(event: "end", listener: () => void): this;
34
+ prependListener(event: "error", listener: (err: Error) => void): this;
35
+ prependListener(event: "timeout", listener: () => void): this;
36
+ }
37
+ export interface IMockSocket extends ISocketLike {
11
38
  invalid?: boolean;
12
- [key: string]: any;
39
+ write(data: string | Buffer, callback?: (err?: Error) => void | undefined): void;
13
40
  destroy(): void;
14
41
  end(): void;
42
+ setKeepAlive(enable?: boolean, initialDelay?: number): this;
43
+ setNoDelay(noDelay?: boolean): this;
44
+ setTimeout(timeout: number, callback?: () => void): this;
15
45
  }
16
- export declare function setFakeTransport(mockSocket: MockSocket): void;
17
- export declare function getFakeTransport(): any;
46
+ export declare function setFakeTransport(mockSocket: IMockSocket): void;
47
+ export declare function getFakeTransport(): ISocketLike;
18
48
  export interface TCP_transport {
19
49
  /**
20
50
  * notify the observers that a message chunk has been received
@@ -22,21 +52,13 @@ export interface TCP_transport {
22
52
  * @param message_chunk the message chunk
23
53
  */
24
54
  on(eventName: "chunk", eventHandler: (messageChunk: Buffer) => void): this;
25
- /**
26
- * notify the observers that the transport layer has been disconnected.
27
- * @event socket_closed
28
- * @param err the Error object or null
29
- */
30
- on(eventName: "socket_closed", eventHandler: (err: Error | null) => void): this;
31
55
  /**
32
56
  * notify the observers that the transport layer has been disconnected.
33
57
  * @event close
34
58
  */
35
59
  on(eventName: "close", eventHandler: (err: Error | null) => void): this;
36
60
  once(eventName: "chunk", eventHandler: (messageChunk: Buffer) => void): this;
37
- once(eventName: "socket_closed", eventHandler: (err: Error | null) => void): this;
38
61
  once(eventName: "close", eventHandler: (err: Error | null) => void): this;
39
- emit(eventName: "socket_closed", err?: Error | null): boolean;
40
62
  emit(eventName: "close", err?: Error | null): boolean;
41
63
  emit(eventName: "chunk", messageChunk: Buffer): boolean;
42
64
  }
@@ -56,21 +78,22 @@ export declare class TCP_transport extends EventEmitter {
56
78
  chunkWrittenCount: number;
57
79
  chunkReadCount: number;
58
80
  name: string;
59
- _socket: Socket | null;
81
+ _socket: ISocketLike | null;
82
+ private _closedEmitted;
60
83
  /**
61
84
  * the size of the header in bytes
62
85
  * @default 8
63
86
  */
64
87
  private readonly headerSize;
65
- private _disconnecting;
66
88
  private _timerId;
67
- private _onSocketClosedHasBeenCalled;
68
- private _onSocketEndedHasBeenCalled;
69
89
  private _theCallback?;
70
90
  private _on_error_during_one_time_message_receiver;
71
91
  private packetAssembler?;
72
92
  private _timeout;
93
+ private _isDisconnecting;
94
+ protected _theCloseError: Error | null;
73
95
  constructor();
96
+ toString(): string;
74
97
  setLimits({ receiveBufferSize, sendBufferSize, maxMessageSize, maxChunkCount }: {
75
98
  receiveBufferSize: number;
76
99
  sendBufferSize: number;
@@ -86,7 +109,7 @@ export declare class TCP_transport extends EventEmitter {
86
109
  * @param messageChunk
87
110
  */
88
111
  write(messageChunk: Buffer, callback?: (err?: Error) => void | undefined): void;
89
- get isDisconnecting(): boolean;
112
+ isDisconnecting(): boolean;
90
113
  /**
91
114
  * disconnect the TCP layer and close the underlying socket.
92
115
  * The ```"close"``` event will be emitted to the observers with err=null.
@@ -98,14 +121,8 @@ export declare class TCP_transport extends EventEmitter {
98
121
  disconnect(callback: ErrorCallback): void;
99
122
  isValid(): boolean;
100
123
  protected _write_chunk(messageChunk: Buffer, callback?: (err?: Error) => void | undefined): void;
101
- protected on_socket_ended(err: Error | null): void;
102
124
  protected _install_packetAssembler(): void;
103
- /**
104
- * @method _install_socket
105
- * @param socket {Socket}
106
- * @protected
107
- */
108
- protected _install_socket(socket: Socket): void;
125
+ protected _install_socket(socket: ISocketLike): void;
109
126
  sendErrorMessage(statusCode: StatusCode, extraErrorDescription: string | null): void;
110
127
  prematureTerminate(err: Error, statusCode: StatusCode): void;
111
128
  /**
@@ -127,10 +144,10 @@ export declare class TCP_transport extends EventEmitter {
127
144
  private _on_message_chunk_received;
128
145
  private _cleanup_timers;
129
146
  private _start_one_time_message_receiver;
130
- private on_socket_closed;
131
147
  private _on_socket_data;
132
148
  private _on_socket_close;
133
- private _on_socket_ended_message;
149
+ protected _emitClose(err?: Error | null): void;
134
150
  private _on_socket_end;
135
151
  private _on_socket_error;
152
+ private _on_socket_timeout;
136
153
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TCP_transport = exports.getFakeTransport = exports.setFakeTransport = void 0;
4
+ /* eslint-disable @typescript-eslint/ban-types */
4
5
  /**
5
6
  * @module node-opcua-transport
6
7
  */
@@ -15,19 +16,38 @@ const message_builder_base_1 = require("./message_builder_base");
15
16
  const utils_1 = require("./utils");
16
17
  const TCPErrorMessage_1 = require("./TCPErrorMessage");
17
18
  const tools_1 = require("./tools");
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);
21
- const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
22
- let fakeSocket = {
19
+ const debugLog = (0, node_opcua_debug_1.make_debugLog)("TRANSPORT");
20
+ const doDebug = (0, node_opcua_debug_1.checkDebugFlag)("TRANSPORT");
21
+ const errorLog = (0, node_opcua_debug_1.make_errorLog)("TRANSPORT");
22
+ const warningLog = (0, node_opcua_debug_1.make_warningLog)("TRANSPORT");
23
+ const doDebugFlow = false;
24
+ const defaultFakeSocket = {
23
25
  invalid: true,
24
- destroy() {
26
+ destroyed: false,
27
+ destroy(err) {
28
+ this.destroyed = true;
25
29
  errorLog("MockSocket.destroy");
26
30
  },
27
31
  end() {
28
32
  errorLog("MockSocket.end");
33
+ },
34
+ write(data, callback) {
35
+ /** */
36
+ if (callback) {
37
+ callback();
38
+ }
39
+ },
40
+ setKeepAlive(enable, initialDelay) {
41
+ return this;
42
+ },
43
+ setNoDelay(noDelay) {
44
+ return this;
45
+ },
46
+ setTimeout(timeout, callback) {
47
+ return this;
29
48
  }
30
49
  };
50
+ let fakeSocket = defaultFakeSocket;
31
51
  function setFakeTransport(mockSocket) {
32
52
  fakeSocket = mockSocket;
33
53
  }
@@ -36,6 +56,7 @@ function getFakeTransport() {
36
56
  if (fakeSocket.invalid) {
37
57
  throw new Error("getFakeTransport: setFakeTransport must be called first - BadProtocolVersionUnsupported");
38
58
  }
59
+ process.nextTick(() => fakeSocket.emit("connect"));
39
60
  return fakeSocket;
40
61
  }
41
62
  exports.getFakeTransport = getFakeTransport;
@@ -44,10 +65,13 @@ let counter = 0;
44
65
  class TCP_transport extends events_1.EventEmitter {
45
66
  constructor() {
46
67
  super();
68
+ this._closedEmitted = undefined;
69
+ this._isDisconnecting = false;
70
+ this._theCloseError = null;
47
71
  this.name = this.constructor.name + counter;
48
72
  counter += 1;
49
73
  this._timerId = null;
50
- this._timeout = 30000; // 30 seconds timeout
74
+ this._timeout = 5000; // 5 seconds timeout
51
75
  this._socket = null;
52
76
  this.headerSize = 8;
53
77
  this.maxMessageSize = 0;
@@ -55,16 +79,28 @@ class TCP_transport extends events_1.EventEmitter {
55
79
  this.receiveBufferSize = 0;
56
80
  this.sendBufferSize = 0;
57
81
  this.protocolVersion = 0;
58
- this._disconnecting = false;
59
82
  this.bytesWritten = 0;
60
83
  this.bytesRead = 0;
61
84
  this._theCallback = undefined;
62
85
  this.chunkWrittenCount = 0;
63
86
  this.chunkReadCount = 0;
64
- this._onSocketClosedHasBeenCalled = false;
65
- this._onSocketEndedHasBeenCalled = false;
66
87
  TCP_transport.registry.register(this);
67
88
  }
89
+ toString() {
90
+ let str = "\n";
91
+ str += " name.............. = " + this.name + "\n";
92
+ str += " protocolVersion... = " + this.protocolVersion + "\n";
93
+ str += " maxMessageSize.... = " + this.maxMessageSize + "\n";
94
+ str += " maxChunkCount..... = " + this.maxChunkCount + "\n";
95
+ str += " receiveBufferSize. = " + this.receiveBufferSize + "\n";
96
+ str += " sendBufferSize.... = " + this.sendBufferSize + "\n";
97
+ str += " bytesRead......... = " + this.bytesRead + "\n";
98
+ str += " bytesWritten...... = " + this.bytesWritten + "\n";
99
+ str += " chunkWrittenCount. = " + this.chunkWrittenCount + "\n";
100
+ str += " chunkReadCount.... = " + this.chunkReadCount + "\n";
101
+ str += " closeEmitted ? ....= " + this._closedEmitted + "\n";
102
+ return str;
103
+ }
68
104
  setLimits({ receiveBufferSize, sendBufferSize, maxMessageSize, maxChunkCount }) {
69
105
  this.receiveBufferSize = receiveBufferSize;
70
106
  this.sendBufferSize = sendBufferSize;
@@ -81,6 +117,7 @@ class TCP_transport extends events_1.EventEmitter {
81
117
  return this._timeout;
82
118
  }
83
119
  set timeout(value) {
120
+ (0, node_opcua_assert_1.assert)(!this._timerId);
84
121
  debugLog("Setting socket " + this.name + " timeout = ", value);
85
122
  this._timeout = value;
86
123
  }
@@ -89,7 +126,7 @@ class TCP_transport extends events_1.EventEmitter {
89
126
  (0, node_opcua_assert_1.assert)(!this._timerId);
90
127
  if (this._socket) {
91
128
  this._socket.destroy();
92
- this._socket.removeAllListeners();
129
+ // this._socket.removeAllListeners();
93
130
  this._socket = null;
94
131
  }
95
132
  TCP_transport.registry.unregister(this);
@@ -108,8 +145,8 @@ class TCP_transport extends events_1.EventEmitter {
108
145
  callback && callback(err);
109
146
  });
110
147
  }
111
- get isDisconnecting() {
112
- return this._disconnecting;
148
+ isDisconnecting() {
149
+ return !this._socket || this._isDisconnecting;
113
150
  }
114
151
  /**
115
152
  * disconnect the TCP layer and close the underlying socket.
@@ -121,28 +158,27 @@ class TCP_transport extends events_1.EventEmitter {
121
158
  */
122
159
  disconnect(callback) {
123
160
  (0, node_opcua_assert_1.assert)(typeof callback === "function", "expecting a callback function, but got " + callback);
124
- if (this._disconnecting) {
161
+ if (!this._socket || this._isDisconnecting) {
162
+ if (!this._isDisconnecting) {
163
+ this.dispose();
164
+ }
125
165
  callback();
126
166
  return;
127
167
  }
128
- (0, node_opcua_assert_1.assert)(!this._disconnecting, "TCP Transport has already been disconnected");
129
- this._disconnecting = true;
130
- // xx assert(!this._theCallback,
131
- // "disconnect shall not be called while the 'one time message receiver' is in operation");
168
+ this._isDisconnecting = true;
132
169
  this._cleanup_timers();
133
- if (this._socket) {
134
- this._socket.end();
135
- this._socket && this._socket.destroy();
136
- // xx this._socket.removeAllListeners();
137
- this._socket = null;
138
- }
139
- this.on_socket_ended(null);
140
- setImmediate(() => {
141
- callback();
170
+ this._socket.prependOnceListener("close", () => {
171
+ this._emitClose(null);
172
+ setImmediate(() => {
173
+ callback();
174
+ });
142
175
  });
176
+ this._socket.end();
177
+ this._socket && this._socket.destroy();
178
+ this._socket = null;
143
179
  }
144
180
  isValid() {
145
- return this._socket !== null && !this._socket.destroyed && !this._disconnecting;
181
+ return this._socket !== null && !this._socket.destroyed;
146
182
  }
147
183
  _write_chunk(messageChunk, callback) {
148
184
  if (this._socket !== null) {
@@ -156,15 +192,6 @@ class TCP_transport extends events_1.EventEmitter {
156
192
  }
157
193
  }
158
194
  }
159
- on_socket_ended(err) {
160
- if (!this._onSocketEndedHasBeenCalled) {
161
- this._onSocketEndedHasBeenCalled = true; // we don't want to send close event twice ...
162
- this.emit("close", err || null);
163
- }
164
- else {
165
- debugLog("on_socket_ended has already been called");
166
- }
167
- }
168
195
  _install_packetAssembler() {
169
196
  if (this.packetAssembler) {
170
197
  this.packetAssembler.removeAllListeners();
@@ -190,14 +217,21 @@ class TCP_transport extends events_1.EventEmitter {
190
217
  this.prematureTerminate(new Error("Packet Assembler : " + err.message), statusCode);
191
218
  });
192
219
  }
193
- /**
194
- * @method _install_socket
195
- * @param socket {Socket}
196
- * @protected
197
- */
198
220
  _install_socket(socket) {
221
+ // note: it is possible that a transport may be recycled and re-used again after a connection break
199
222
  (0, node_opcua_assert_1.assert)(socket);
223
+ (0, node_opcua_assert_1.assert)(!this._socket, "already have a socket");
200
224
  this._socket = socket;
225
+ this._closedEmitted = undefined;
226
+ this._theCloseError = null;
227
+ (0, node_opcua_assert_1.assert)(this._closedEmitted === undefined, "TCP Transport has already been closed !");
228
+ this._socket.setKeepAlive(true);
229
+ // Setting true for noDelay will immediately fire off data each time socket.write() is called.
230
+ this._socket.setNoDelay(true);
231
+ // set socket timeout
232
+ debugLog(" TCP_transport#install => setting " + this.name + " _socket.setTimeout to ", this.timeout);
233
+ // let use a large timeout here to make sure that we not conflict with our internal timeout
234
+ this._socket.setTimeout(this.timeout);
201
235
  if (doDebug) {
202
236
  debugLog(" TCP_transport#_install_socket ", this.name);
203
237
  }
@@ -205,15 +239,9 @@ class TCP_transport extends events_1.EventEmitter {
205
239
  this._socket
206
240
  .on("data", (data) => this._on_socket_data(data))
207
241
  .on("close", (hadError) => this._on_socket_close(hadError))
208
- .on("end", (err) => this._on_socket_end(err))
209
- .on("error", (err) => this._on_socket_error(err));
210
- // set socket timeout
211
- debugLog(" TCP_transport#install => setting " + this.name + " _socket.setTimeout to ", this.timeout);
212
- // let use a large timeout here to make sure that we not conflict with our internal timeout
213
- this._socket.setTimeout(this.timeout + 2000, () => {
214
- debugLog(` _socket ${this.name} has timed out (timeout = ${this.timeout})`);
215
- this.prematureTerminate(new Error("socket timeout : timeout=" + this.timeout), status_codes_1.StatusCodes2.BadTimeout);
216
- });
242
+ .on("end", () => this._on_socket_end())
243
+ .on("error", (err) => this._on_socket_error(err))
244
+ .on("timeout", () => this._on_socket_timeout());
217
245
  }
218
246
  sendErrorMessage(statusCode, extraErrorDescription) {
219
247
  // When the Client receives an Error Message it reports the error to the application and closes the TransportConnection gracefully.
@@ -233,18 +261,16 @@ class TCP_transport extends events_1.EventEmitter {
233
261
  }
234
262
  prematureTerminate(err, statusCode) {
235
263
  // https://reference.opcfoundation.org/v104/Core/docs/Part6/6.7.3/
236
- debugLog("prematureTerminate", err ? err.message : "", statusCode.toString());
264
+ debugLog("prematureTerminate", err ? err.message : "", statusCode.toString(), "has socket = ", !!this._socket);
265
+ doDebugFlow && console.log("prematureTerminate from", "has socket = ", !!this._socket, new Error().stack);
237
266
  if (this._socket) {
238
267
  err.message = "premature socket termination " + err.message;
239
268
  // we consider this as an error
240
269
  const _s = this._socket;
241
- _s.end();
242
- _s.destroy(); // new Error("Socket has timed out"));
243
- _s.emit("error", err);
244
270
  this._socket = null;
271
+ _s.destroy(err);
245
272
  this.dispose();
246
273
  }
247
- // this.gracefullShutdown(err);
248
274
  }
249
275
  /**
250
276
  * @method _install_one_time_message_receiver
@@ -263,26 +289,21 @@ class TCP_transport extends events_1.EventEmitter {
263
289
  _install_one_time_message_receiver(callback) {
264
290
  (0, node_opcua_assert_1.assert)(!this._theCallback, "callback already set");
265
291
  (0, node_opcua_assert_1.assert)(typeof callback === "function");
266
- this._theCallback = callback;
267
- this._start_one_time_message_receiver();
292
+ this._start_one_time_message_receiver(callback);
268
293
  }
269
294
  _fulfill_pending_promises(err, data) {
270
- this._cleanup_timers();
271
- if (this._socket && this._on_error_during_one_time_message_receiver) {
272
- this._socket.removeListener("close", this._on_error_during_one_time_message_receiver);
273
- this._on_error_during_one_time_message_receiver = null;
274
- }
295
+ if (!this._theCallback)
296
+ return false;
297
+ doDebugFlow && console.log("_fulfill_pending_promises from", new Error().stack);
275
298
  const callback = this._theCallback;
276
299
  this._theCallback = undefined;
277
- if (callback) {
278
- callback(err, data);
279
- return true;
280
- }
281
- return false;
300
+ callback(err, data);
301
+ return true;
282
302
  }
283
303
  _on_message_chunk_received(messageChunk) {
284
304
  if (utils_1.doTraceIncomingChunk) {
285
- console.log((0, node_opcua_debug_1.hexDump)(messageChunk));
305
+ warningLog("Transport", this.name);
306
+ warningLog((0, node_opcua_debug_1.hexDump)(messageChunk));
286
307
  }
287
308
  const hadCallback = this._fulfill_pending_promises(null, messageChunk);
288
309
  this.chunkReadCount++;
@@ -296,29 +317,42 @@ class TCP_transport extends events_1.EventEmitter {
296
317
  this._timerId = null;
297
318
  }
298
319
  }
299
- _start_one_time_message_receiver() {
300
- (0, node_opcua_assert_1.assert)(!this._timerId, "timer already started");
320
+ _start_one_time_message_receiver(callback) {
321
+ (0, node_opcua_assert_1.assert)(!this._timerId && !this._on_error_during_one_time_message_receiver, "timer already started");
322
+ const _cleanUp = () => {
323
+ var _a;
324
+ this._cleanup_timers();
325
+ if (this._on_error_during_one_time_message_receiver) {
326
+ (_a = this._socket) === null || _a === void 0 ? void 0 : _a.removeListener("close", this._on_error_during_one_time_message_receiver);
327
+ this._on_error_during_one_time_message_receiver = undefined;
328
+ }
329
+ };
330
+ const onTimeout = () => {
331
+ _cleanUp();
332
+ this._fulfill_pending_promises(new Error(`Timeout(A) in waiting for data on socket ( timeout was = ${this.timeout} ms)`));
333
+ this.dispose();
334
+ };
301
335
  // Setup timeout detection timer ....
302
336
  this._timerId = setTimeout(() => {
303
337
  this._timerId = null;
304
- this._fulfill_pending_promises(new Error(`Timeout in waiting for data on socket ( timeout was = ${this.timeout} ms)`));
338
+ onTimeout();
305
339
  }, this.timeout);
306
340
  // also monitored
307
341
  if (this._socket) {
308
342
  // to do = intercept socket error as well
309
- this._on_error_during_one_time_message_receiver = (err) => {
310
- this._fulfill_pending_promises(new Error(`ERROR in waiting for data on socket ( timeout was = ${this.timeout} ms) ` + (err === null || err === void 0 ? void 0 : err.message)));
343
+ this._on_error_during_one_time_message_receiver = (hadError) => {
344
+ const err = new Error(`ERROR in waiting for data on socket ( timeout was = ${this.timeout} ms) hadError` + hadError);
345
+ this._emitClose(err);
346
+ this._fulfill_pending_promises(err);
311
347
  };
312
- this._socket.on("close", this._on_error_during_one_time_message_receiver);
313
- }
314
- }
315
- on_socket_closed(err) {
316
- if (this._onSocketClosedHasBeenCalled) {
317
- return;
348
+ this._socket.prependOnceListener("close", this._on_error_during_one_time_message_receiver);
318
349
  }
319
- (0, node_opcua_assert_1.assert)(!this._onSocketClosedHasBeenCalled);
320
- this._onSocketClosedHasBeenCalled = true; // we don't want to send close event twice ...
321
- this.emit("socket_closed", err || null);
350
+ const _callback = callback;
351
+ this._theCallback = (err, data) => {
352
+ _cleanUp();
353
+ this._theCallback = undefined;
354
+ _callback(err, data);
355
+ };
322
356
  }
323
357
  _on_socket_data(data) {
324
358
  // istanbul ignore next
@@ -333,46 +367,62 @@ class TCP_transport extends events_1.EventEmitter {
333
367
  _on_socket_close(hadError) {
334
368
  // istanbul ignore next
335
369
  if (doDebug) {
336
- debugLog(chalk.red(" SOCKET CLOSE : "), chalk.yellow("had_error ="), chalk.cyan(hadError.toString()), this.name);
370
+ debugLog(chalk.red(` SOCKET CLOSE ${this.name}: `), chalk.yellow("had_error ="), chalk.cyan(hadError.toString()));
337
371
  }
338
- if (this._socket) {
339
- debugLog(" remote address = ", this._socket.remoteAddress, " ", this._socket.remoteFamily, " ", this._socket.remotePort);
372
+ this.dispose();
373
+ if (this._theCallback)
374
+ return;
375
+ // if (hadError) {
376
+ // if (this._socket) {
377
+ // this._socket.destroy();
378
+ // }
379
+ // }
380
+ this._emitClose();
381
+ }
382
+ _emitClose(err) {
383
+ err = err || this._theCloseError;
384
+ doDebugFlow && console.log("_emitClose ", (err === null || err === void 0 ? void 0 : err.message) || "", "from", new Error().stack);
385
+ if (!this._closedEmitted) {
386
+ this._closedEmitted = err || "noError";
387
+ this.emit("close", err || null);
388
+ // if (this._theCallback) {
389
+ // const callback = this._theCallback;
390
+ // this._theCallback = undefined;
391
+ // callback(err || null);
392
+ // }
340
393
  }
341
- if (hadError) {
342
- if (this._socket) {
343
- this._socket.destroy();
344
- }
394
+ else {
395
+ debugLog("Already emitted close event", this._closedEmitted.message);
396
+ debugLog("err = ", err === null || err === void 0 ? void 0 : err.message);
397
+ debugLog("");
398
+ debugLog("Already emitted close event", this._closedEmitted);
399
+ debugLog("err = ", err === null || err === void 0 ? void 0 : err.message, err);
345
400
  }
346
- const err = hadError ? new Error("ERROR IN SOCKET " + hadError.toString()) : undefined;
347
- this.on_socket_closed(err);
348
- this.dispose();
349
401
  }
350
- _on_socket_ended_message(err) {
351
- if (this._disconnecting) {
402
+ _on_socket_end() {
403
+ // istanbul ignore next
404
+ doDebug && debugLog(chalk.red(` SOCKET END : ${this.name}`), "is disconnecting ", this.isDisconnecting());
405
+ if (this.isDisconnecting()) {
352
406
  return;
353
407
  }
354
- debugLog(chalk.red("Transport Connection ended") + " " + this.name);
355
- (0, node_opcua_assert_1.assert)(!this._disconnecting);
356
- err = err || new Error("_socket has been disconnected by third party");
357
- this.on_socket_ended(err);
358
- this._disconnecting = true;
408
+ //
409
+ debugLog(chalk.red(" Transport Connection ended") + " " + this.name);
410
+ const err = new Error(this.name + ": socket has been disconnected by third party");
359
411
  debugLog(" bytesRead = ", this.bytesRead);
360
412
  debugLog(" bytesWritten = ", this.bytesWritten);
413
+ this._theCloseError = err;
361
414
  this._fulfill_pending_promises(new Error("Connection aborted - ended by server : " + (err ? err.message : "")));
362
415
  }
363
- _on_socket_end(err) {
364
- // istanbul ignore next
365
- if (doDebug) {
366
- debugLog(chalk.red(" SOCKET END : err="), chalk.yellow(err ? err.message : "null"), this.name);
367
- }
368
- this._on_socket_ended_message(err);
369
- }
370
416
  _on_socket_error(err) {
371
417
  // istanbul ignore next
372
- if (doDebug) {
373
- debugLog(chalk.red(" SOCKET ERROR : "), chalk.yellow(err.message), this.name);
374
- }
418
+ debugLog(chalk.red(` _on_socket_error: ${this.name}`), chalk.yellow(err.message));
375
419
  // node The "close" event will be called directly following this event.
420
+ // this._emitClose(err);
421
+ }
422
+ _on_socket_timeout() {
423
+ const msg = `socket timeout : timeout=${this.timeout} ${this.name}`;
424
+ doDebug && debugLog(msg);
425
+ this.prematureTerminate(new Error(msg), status_codes_1.StatusCodes2.BadTimeout);
376
426
  }
377
427
  }
378
428
  TCP_transport.registry = new node_opcua_object_registry_1.ObjectRegistry();
@@ -1 +1 @@
1
- {"version":3,"file":"tcp_transport.js","sourceRoot":"","sources":["../../source/tcp_transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tcp_transport.js","sourceRoot":"","sources":["../../source/tcp_transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ISocketLike } from "../source";
2
+ export interface ITransportPair {
3
+ initialize(callback: (err?: Error) => void): void;
4
+ shutdown(callback: (err?: Error) => void): void;
5
+ client: ISocketLike;
6
+ server: ISocketLike;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITransportPair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITransportPair.js","sourceRoot":"","sources":["../../test_helpers/ITransportPair.ts"],"names":[],"mappings":""}