node-opcua-client 2.98.0 → 2.98.1
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/dist/alarms_and_conditions/client_alarm.d.ts +49 -0
- package/dist/alarms_and_conditions/client_alarm.js +110 -0
- package/dist/alarms_and_conditions/client_alarm.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_list.d.ts +25 -0
- package/dist/alarms_and_conditions/client_alarm_list.js +98 -0
- package/dist/alarms_and_conditions/client_alarm_list.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_tools.d.ts +4 -0
- package/dist/alarms_and_conditions/client_alarm_tools.js +157 -0
- package/dist/alarms_and_conditions/client_alarm_tools.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.d.ts +18 -0
- package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js +193 -0
- package/dist/alarms_and_conditions/client_alarm_tools_acknowledge_all_conditions.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_tools_dump_event.d.ts +9 -0
- package/dist/alarms_and_conditions/client_alarm_tools_dump_event.js +73 -0
- package/dist/alarms_and_conditions/client_alarm_tools_dump_event.js.map +1 -0
- package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.d.ts +3 -0
- package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js +119 -0
- package/dist/alarms_and_conditions/client_alarm_tools_extractConditionFields.js.map +1 -0
- package/dist/alarms_and_conditions/client_tools.d.ts +7 -0
- package/dist/alarms_and_conditions/client_tools.js +180 -0
- package/dist/alarms_and_conditions/client_tools.js.map +1 -0
- package/dist/client_base.d.ts +277 -0
- package/dist/client_base.js +15 -0
- package/dist/client_base.js.map +1 -0
- package/dist/client_monitored_item.d.ts +21 -0
- package/dist/client_monitored_item.js +12 -0
- package/dist/client_monitored_item.js.map +1 -0
- package/dist/client_monitored_item_base.d.ts +39 -0
- package/dist/client_monitored_item_base.js +3 -0
- package/dist/client_monitored_item_base.js.map +1 -0
- package/dist/client_monitored_item_group.d.ts +21 -0
- package/dist/client_monitored_item_group.js +14 -0
- package/dist/client_monitored_item_group.js.map +1 -0
- package/dist/client_monitored_item_toolbox.d.ts +15 -0
- package/dist/client_monitored_item_toolbox.js +117 -0
- package/dist/client_monitored_item_toolbox.js.map +1 -0
- package/dist/client_session.d.ts +529 -0
- package/dist/client_session.js +11 -0
- package/dist/client_session.js.map +1 -0
- package/dist/client_session_keepalive_manager.d.ts +34 -0
- package/dist/client_session_keepalive_manager.js +150 -0
- package/dist/client_session_keepalive_manager.js.map +1 -0
- package/dist/client_subscription.d.ts +241 -0
- package/dist/client_subscription.js +15 -0
- package/dist/client_subscription.js.map +1 -0
- package/dist/client_utils.d.ts +22 -0
- package/dist/client_utils.js +88 -0
- package/dist/client_utils.js.map +1 -0
- package/dist/common.d.ts +17 -0
- package/dist/common.js +6 -0
- package/dist/common.js.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/opcua_client.d.ts +118 -0
- package/dist/opcua_client.js +34 -0
- package/dist/opcua_client.js.map +1 -0
- package/dist/private/client_base_impl.d.ts +160 -0
- package/dist/private/client_base_impl.js +1349 -0
- package/dist/private/client_base_impl.js.map +1 -0
- package/dist/private/client_monitored_item_base_impl.d.ts +3 -0
- package/dist/private/client_monitored_item_base_impl.js +5 -0
- package/dist/private/client_monitored_item_base_impl.js.map +1 -0
- package/dist/private/client_monitored_item_group_impl.d.ts +53 -0
- package/dist/private/client_monitored_item_group_impl.js +162 -0
- package/dist/private/client_monitored_item_group_impl.js.map +1 -0
- package/dist/private/client_monitored_item_impl.d.ts +93 -0
- package/dist/private/client_monitored_item_impl.js +305 -0
- package/dist/private/client_monitored_item_impl.js.map +1 -0
- package/dist/private/client_publish_engine.d.ts +62 -0
- package/dist/private/client_publish_engine.js +409 -0
- package/dist/private/client_publish_engine.js.map +1 -0
- package/dist/private/client_session_impl.d.ts +631 -0
- package/dist/private/client_session_impl.js +1349 -0
- package/dist/private/client_session_impl.js.map +1 -0
- package/dist/private/client_subscription_impl.d.ts +93 -0
- package/dist/private/client_subscription_impl.js +780 -0
- package/dist/private/client_subscription_impl.js.map +1 -0
- package/dist/private/i_private_client.d.ts +21 -0
- package/dist/private/i_private_client.js +3 -0
- package/dist/private/i_private_client.js.map +1 -0
- package/dist/private/opcua_client_impl.d.ts +166 -0
- package/dist/private/opcua_client_impl.js +1001 -0
- package/dist/private/opcua_client_impl.js.map +1 -0
- package/dist/private/performance.d.ts +1 -0
- package/dist/private/performance.js +19 -0
- package/dist/private/performance.js.map +1 -0
- package/dist/reconnection.d.ts +9 -0
- package/dist/reconnection.js +382 -0
- package/dist/reconnection.js.map +1 -0
- package/dist/tools/findservers.d.ts +20 -0
- package/dist/tools/findservers.js +62 -0
- package/dist/tools/findservers.js.map +1 -0
- package/dist/tools/read_history_server_capabilities.d.ts +6 -0
- package/dist/tools/read_history_server_capabilities.js +99 -0
- package/dist/tools/read_history_server_capabilities.js.map +1 -0
- package/dist/user_identity_info.d.ts +1 -0
- package/dist/user_identity_info.js +3 -0
- package/dist/user_identity_info.js.map +1 -0
- package/dist/verify.d.ts +5 -0
- package/dist/verify.js +135 -0
- package/dist/verify.js.map +1 -0
- package/package.json +48 -44
- package/.nycrc.json +0 -14
- package/test_helpers/create_certificates.js +0 -1
- package/typedoc.js +0 -20
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClientMonitoredItemImpl = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @module node-opcua-client-private
|
|
6
|
+
*/
|
|
7
|
+
// tslint:disable:unified-signatures
|
|
8
|
+
// tslint:disable:no-empty
|
|
9
|
+
const events_1 = require("events");
|
|
10
|
+
const node_opcua_assert_1 = require("node-opcua-assert");
|
|
11
|
+
const node_opcua_data_model_1 = require("node-opcua-data-model");
|
|
12
|
+
const node_opcua_data_value_1 = require("node-opcua-data-value");
|
|
13
|
+
const node_opcua_debug_1 = require("node-opcua-debug");
|
|
14
|
+
const node_opcua_service_filter_1 = require("node-opcua-service-filter");
|
|
15
|
+
const node_opcua_service_read_1 = require("node-opcua-service-read");
|
|
16
|
+
const node_opcua_service_subscription_1 = require("node-opcua-service-subscription");
|
|
17
|
+
const node_opcua_status_code_1 = require("node-opcua-status-code");
|
|
18
|
+
const client_monitored_item_1 = require("../client_monitored_item");
|
|
19
|
+
const client_monitored_item_toolbox_1 = require("../client_monitored_item_toolbox");
|
|
20
|
+
const client_subscription_impl_1 = require("./client_subscription_impl");
|
|
21
|
+
const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
|
|
22
|
+
const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
|
|
23
|
+
const doDebug = (0, node_opcua_debug_1.checkDebugFlag)(__filename);
|
|
24
|
+
/**
|
|
25
|
+
* ClientMonitoredItem
|
|
26
|
+
* @class ClientMonitoredItem
|
|
27
|
+
* @extends ClientMonitoredItemBase
|
|
28
|
+
*
|
|
29
|
+
* event:
|
|
30
|
+
* "initialized"
|
|
31
|
+
* "err"
|
|
32
|
+
* "changed"
|
|
33
|
+
*
|
|
34
|
+
* note: this.monitoringMode = subscription_service.MonitoringMode.Reporting;
|
|
35
|
+
*/
|
|
36
|
+
class ClientMonitoredItemImpl extends events_1.EventEmitter {
|
|
37
|
+
constructor(subscription, itemToMonitor, monitoringParameters, timestampsToReturn, monitoringMode = node_opcua_service_subscription_1.MonitoringMode.Reporting) {
|
|
38
|
+
super();
|
|
39
|
+
this.statusCode = node_opcua_status_code_1.StatusCodes.BadDataUnavailable;
|
|
40
|
+
(0, node_opcua_assert_1.assert)(subscription.constructor.name === "ClientSubscriptionImpl");
|
|
41
|
+
this.subscription = subscription;
|
|
42
|
+
this.itemToMonitor = new node_opcua_service_read_1.ReadValueId(itemToMonitor);
|
|
43
|
+
this.monitoringParameters = new node_opcua_service_subscription_1.MonitoringParameters(monitoringParameters);
|
|
44
|
+
this.monitoringMode = monitoringMode;
|
|
45
|
+
(0, node_opcua_assert_1.assert)(this.monitoringParameters.clientHandle === 0xffffffff, "should not have a client handle yet");
|
|
46
|
+
(0, node_opcua_assert_1.assert)(subscription.session, "expecting session");
|
|
47
|
+
timestampsToReturn = (0, node_opcua_data_value_1.coerceTimestampsToReturn)(timestampsToReturn);
|
|
48
|
+
(0, node_opcua_assert_1.assert)(subscription.constructor.name === "ClientSubscriptionImpl");
|
|
49
|
+
this.timestampsToReturn = timestampsToReturn;
|
|
50
|
+
}
|
|
51
|
+
toString() {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
let ret = "";
|
|
54
|
+
ret += "itemToMonitor: " + this.itemToMonitor.toString() + "\n";
|
|
55
|
+
ret += "monitoringParameters: " + this.monitoringParameters.toString() + "\n";
|
|
56
|
+
ret += "timestampsToReturn: " + this.timestampsToReturn.toString() + "\n";
|
|
57
|
+
ret += "itemToMonitor " + this.itemToMonitor.nodeId + "\n";
|
|
58
|
+
ret += "statusCode " + ((_a = this.statusCode) === null || _a === void 0 ? void 0 : _a.toString()) + "\n";
|
|
59
|
+
ret += "result =" + ((_b = this.result) === null || _b === void 0 ? void 0 : _b.toString()) + "\n";
|
|
60
|
+
return ret;
|
|
61
|
+
}
|
|
62
|
+
terminate(...args) {
|
|
63
|
+
const done = args[0];
|
|
64
|
+
(0, node_opcua_assert_1.assert)(typeof done === "function");
|
|
65
|
+
const subscription = this.subscription;
|
|
66
|
+
subscription._delete_monitored_items([this], (err) => {
|
|
67
|
+
if (done) {
|
|
68
|
+
done(err);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
modify(...args) {
|
|
73
|
+
if (args.length === 2) {
|
|
74
|
+
return this.modify(args[0], null, args[1]);
|
|
75
|
+
}
|
|
76
|
+
const parameters = args[0];
|
|
77
|
+
const timestampsToReturn = args[1];
|
|
78
|
+
const callback = args[2];
|
|
79
|
+
this.timestampsToReturn = timestampsToReturn || this.timestampsToReturn;
|
|
80
|
+
client_monitored_item_toolbox_1.ClientMonitoredItemToolbox._toolbox_modify(this.subscription, [this], parameters, this.timestampsToReturn, (err, results) => {
|
|
81
|
+
if (err) {
|
|
82
|
+
return callback(err);
|
|
83
|
+
}
|
|
84
|
+
if (!results) {
|
|
85
|
+
return callback(new Error("internal error"));
|
|
86
|
+
}
|
|
87
|
+
(0, node_opcua_assert_1.assert)(results.length === 1);
|
|
88
|
+
callback(null, results[0]);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
setMonitoringMode(...args) {
|
|
92
|
+
const monitoringMode = args[0];
|
|
93
|
+
const callback = args[1];
|
|
94
|
+
client_monitored_item_toolbox_1.ClientMonitoredItemToolbox._toolbox_setMonitoringMode(this.subscription, [this], monitoringMode, (err, statusCodes) => {
|
|
95
|
+
callback(err ? err : null, statusCodes[0]);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* @internal
|
|
100
|
+
* @param value
|
|
101
|
+
* @private
|
|
102
|
+
*/
|
|
103
|
+
_notify_value_change(value) {
|
|
104
|
+
var _a;
|
|
105
|
+
// it is possible that the first notification arrives before the CreateMonitoredItemsRequest is fully proceed
|
|
106
|
+
// in this case we need to put the dataValue aside so we can send the notification changed after
|
|
107
|
+
// the node-opcua client had time to fully install the on("changed") event handler
|
|
108
|
+
if (((_a = this.statusCode) === null || _a === void 0 ? void 0 : _a.value) === node_opcua_status_code_1.StatusCodes.BadDataUnavailable.value) {
|
|
109
|
+
this._pendingDataValue = this._pendingDataValue || [];
|
|
110
|
+
this._pendingDataValue.push(value);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Notify the observers that the MonitoredItem value has changed on the server side.
|
|
115
|
+
* @event changed
|
|
116
|
+
* @param value
|
|
117
|
+
*/
|
|
118
|
+
try {
|
|
119
|
+
this.emit("changed", value);
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
warningLog("[NODE-OPCUA-W28] Exception raised inside the event handler called by ClientMonitoredItem.on('change')", err);
|
|
123
|
+
warningLog(" Please verify the application using this node-opcua client");
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* @internal
|
|
128
|
+
* @param eventFields
|
|
129
|
+
* @private
|
|
130
|
+
*/
|
|
131
|
+
_notify_event(eventFields) {
|
|
132
|
+
var _a;
|
|
133
|
+
if (((_a = this.statusCode) === null || _a === void 0 ? void 0 : _a.value) === node_opcua_status_code_1.StatusCodes.BadDataUnavailable.value) {
|
|
134
|
+
this._pendingEvents = this._pendingEvents || [];
|
|
135
|
+
this._pendingEvents.push(eventFields);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Notify the observers that the MonitoredItem value has changed on the server side.
|
|
140
|
+
* @event changed
|
|
141
|
+
* @param value
|
|
142
|
+
*/
|
|
143
|
+
try {
|
|
144
|
+
this.emit("changed", eventFields);
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
warningLog("[NODE-OPCUA-W29] Exception raised inside the event handler called by ClientMonitoredItem.on('change')", err);
|
|
148
|
+
warningLog(" Please verify the application using this node-opcua client");
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* @internal
|
|
153
|
+
* @private
|
|
154
|
+
*/
|
|
155
|
+
_prepare_for_monitoring() {
|
|
156
|
+
(0, node_opcua_assert_1.assert)(this.monitoringParameters.clientHandle === 4294967295, "should not have a client handle yet");
|
|
157
|
+
const subscription = this.subscription;
|
|
158
|
+
this.monitoringParameters.clientHandle = subscription.nextClientHandle();
|
|
159
|
+
(0, node_opcua_assert_1.assert)(this.monitoringParameters.clientHandle > 0 && this.monitoringParameters.clientHandle !== 4294967295);
|
|
160
|
+
// If attributeId is EventNotifier then monitoring parameters need a filter.
|
|
161
|
+
// The filter must then either be DataChangeFilter, EventFilter or AggregateFilter.
|
|
162
|
+
// todo can be done in another way?
|
|
163
|
+
// todo implement AggregateFilter
|
|
164
|
+
// todo support DataChangeFilter
|
|
165
|
+
// todo support whereClause
|
|
166
|
+
if (this.itemToMonitor.attributeId === node_opcua_data_model_1.AttributeIds.EventNotifier) {
|
|
167
|
+
//
|
|
168
|
+
// see OPCUA Spec 1.02 part 4 page 65 : 5.12.1.4 Filter
|
|
169
|
+
// see part 4 page 130: 7.16.3 EventFilter
|
|
170
|
+
// part 3 page 11 : 4.6 Event Model
|
|
171
|
+
// To monitor for Events, the attributeId element of the ReadValueId structure is the
|
|
172
|
+
// the id of the EventNotifierAttribute
|
|
173
|
+
// OPC Unified Architecture 1.02, Part 4 5.12.1.2 Sampling interval page 64:
|
|
174
|
+
// "A Client shall define a sampling interval of 0 if it subscribes for Events."
|
|
175
|
+
// toDO
|
|
176
|
+
// note : the EventFilter is used when monitoring Events.
|
|
177
|
+
this.monitoringParameters.filter = this.monitoringParameters.filter || new node_opcua_service_filter_1.EventFilter({});
|
|
178
|
+
const filter = this.monitoringParameters.filter;
|
|
179
|
+
// istanbul ignore next
|
|
180
|
+
if (!filter) {
|
|
181
|
+
return { error: "Internal Error" };
|
|
182
|
+
}
|
|
183
|
+
if (filter.schema.name !== "EventFilter") {
|
|
184
|
+
return {
|
|
185
|
+
error: "Mismatch between attributeId and filter in monitoring parameters : " +
|
|
186
|
+
"Got a " +
|
|
187
|
+
filter.schema.name +
|
|
188
|
+
" but a EventFilter object is required " +
|
|
189
|
+
"when itemToMonitor.attributeId== AttributeIds.EventNotifier"
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else if (this.itemToMonitor.attributeId === node_opcua_data_model_1.AttributeIds.Value) {
|
|
194
|
+
// the DataChangeFilter and the AggregateFilter are used when monitoring Variable Values
|
|
195
|
+
// The Value Attribute is used when monitoring Variables. Variable values are monitored for a change
|
|
196
|
+
// in value or a change in their status. The filters defined in this standard (see 7.16.2) and in Part 8 are
|
|
197
|
+
// used to determine if the value change is large enough to cause a Notification to be generated for the
|
|
198
|
+
// to do : check 'DataChangeFilter' && 'AggregateFilter'
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
if (this.monitoringParameters.filter) {
|
|
202
|
+
return {
|
|
203
|
+
error: "Mismatch between attributeId and filter in monitoring parameters : " +
|
|
204
|
+
"no filter expected when attributeId is not Value or EventNotifier"
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
itemToMonitor: this.itemToMonitor,
|
|
210
|
+
monitoringMode: this.monitoringMode,
|
|
211
|
+
requestedParameters: this.monitoringParameters
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* @internal
|
|
216
|
+
* @param monitoredItemResult
|
|
217
|
+
* @private
|
|
218
|
+
*/
|
|
219
|
+
_applyResult(monitoredItemResult) {
|
|
220
|
+
this.statusCode = monitoredItemResult.statusCode;
|
|
221
|
+
/* istanbul ignore else */
|
|
222
|
+
if (monitoredItemResult.statusCode.isGood()) {
|
|
223
|
+
this.result = monitoredItemResult;
|
|
224
|
+
this.monitoredItemId = monitoredItemResult.monitoredItemId;
|
|
225
|
+
this.monitoringParameters.samplingInterval = monitoredItemResult.revisedSamplingInterval;
|
|
226
|
+
this.monitoringParameters.queueSize = monitoredItemResult.revisedQueueSize;
|
|
227
|
+
this.filterResult = monitoredItemResult.filterResult || undefined;
|
|
228
|
+
}
|
|
229
|
+
// some PublishRequest with DataNotificationChange might have been sent by the server, before the monitored
|
|
230
|
+
// item has been fully initialized it is time to process now any pending notification that were put on hold.
|
|
231
|
+
if (this._pendingDataValue) {
|
|
232
|
+
const dataValues = this._pendingDataValue;
|
|
233
|
+
this._pendingDataValue = undefined;
|
|
234
|
+
setImmediate(() => {
|
|
235
|
+
dataValues.map((dataValue) => this._notify_value_change(dataValue));
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
if (this._pendingEvents) {
|
|
239
|
+
const events = this._pendingEvents;
|
|
240
|
+
this._pendingEvents = undefined;
|
|
241
|
+
setImmediate(() => {
|
|
242
|
+
events.map((event) => this._notify_event(event));
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
_before_create() {
|
|
247
|
+
const subscription = this.subscription;
|
|
248
|
+
subscription._add_monitored_item(this.monitoringParameters.clientHandle, this);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* @internal
|
|
252
|
+
* @param monitoredItemResult
|
|
253
|
+
* @private
|
|
254
|
+
*/
|
|
255
|
+
_after_create(monitoredItemResult) {
|
|
256
|
+
this._applyResult(monitoredItemResult);
|
|
257
|
+
if (this.statusCode.isGood()) {
|
|
258
|
+
/**
|
|
259
|
+
* Notify the observers that the monitored item is now fully initialized.
|
|
260
|
+
* @event initialized
|
|
261
|
+
*/
|
|
262
|
+
this.emit("initialized");
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
/**
|
|
266
|
+
* Notify the observers that the monitored item has failed to initialize.
|
|
267
|
+
* @event err
|
|
268
|
+
* @param statusCode {StatusCode}
|
|
269
|
+
*/
|
|
270
|
+
const err = new Error(monitoredItemResult.statusCode.toString());
|
|
271
|
+
this._terminate_and_emit(err);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
_terminate_and_emit(err) {
|
|
275
|
+
if (this._terminated) {
|
|
276
|
+
return; // already terminated
|
|
277
|
+
}
|
|
278
|
+
if (err) {
|
|
279
|
+
this.emit("err", err.message);
|
|
280
|
+
}
|
|
281
|
+
(0, node_opcua_assert_1.assert)(!this._terminated);
|
|
282
|
+
this._terminated = true;
|
|
283
|
+
/**
|
|
284
|
+
* Notify the observer that this monitored item has been terminated.
|
|
285
|
+
* @event terminated
|
|
286
|
+
*/
|
|
287
|
+
this.emit("terminated", err);
|
|
288
|
+
this.removeAllListeners();
|
|
289
|
+
// also remove from subscription
|
|
290
|
+
const clientHandle = this.monitoringParameters.clientHandle;
|
|
291
|
+
delete this.subscription.monitoredItems[clientHandle];
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
exports.ClientMonitoredItemImpl = ClientMonitoredItemImpl;
|
|
295
|
+
// tslint:disable:no-var-requires
|
|
296
|
+
// tslint:disable:max-line-length
|
|
297
|
+
const thenify = require("thenify");
|
|
298
|
+
const opts = { multiArgs: false };
|
|
299
|
+
ClientMonitoredItemImpl.prototype.terminate = thenify.withCallback(ClientMonitoredItemImpl.prototype.terminate);
|
|
300
|
+
ClientMonitoredItemImpl.prototype.setMonitoringMode = thenify.withCallback(ClientMonitoredItemImpl.prototype.setMonitoringMode);
|
|
301
|
+
ClientMonitoredItemImpl.prototype.modify = thenify.withCallback(ClientMonitoredItemImpl.prototype.modify);
|
|
302
|
+
client_monitored_item_1.ClientMonitoredItem.create = (subscription, itemToMonitor, monitoringParameters, timestampsToReturn, monitoringMode = node_opcua_service_subscription_1.MonitoringMode.Reporting) => {
|
|
303
|
+
return (0, client_subscription_impl_1.ClientMonitoredItem_create)(subscription, itemToMonitor, monitoringParameters, timestampsToReturn, monitoringMode);
|
|
304
|
+
};
|
|
305
|
+
//# sourceMappingURL=client_monitored_item_impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client_monitored_item_impl.js","sourceRoot":"","sources":["../../source/private/client_monitored_item_impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ClientSession, SubscriptionId } from "../client_session";
|
|
2
|
+
import { ClientSubscription } from "../client_subscription";
|
|
3
|
+
/**
|
|
4
|
+
* A client side implementation to deal with publish service.
|
|
5
|
+
*
|
|
6
|
+
* @class ClientSidePublishEngine
|
|
7
|
+
* The ClientSidePublishEngine encapsulates the mechanism to
|
|
8
|
+
* deal with a OPCUA Server and constantly sending PublishRequest
|
|
9
|
+
* The ClientSidePublishEngine also performs notification acknowledgements.
|
|
10
|
+
* Finally, ClientSidePublishEngine dispatch PublishResponse to the correct
|
|
11
|
+
* Subscription id callback
|
|
12
|
+
*
|
|
13
|
+
* @param session {ClientSession} - the client session
|
|
14
|
+
*
|
|
15
|
+
*
|
|
16
|
+
* @constructor
|
|
17
|
+
*/
|
|
18
|
+
export declare class ClientSidePublishEngine {
|
|
19
|
+
static publishRequestCountInPipeline: number;
|
|
20
|
+
timeoutHint: number;
|
|
21
|
+
activeSubscriptionCount: number;
|
|
22
|
+
nbPendingPublishRequests: number;
|
|
23
|
+
nbMaxPublishRequestsAcceptedByServer: number;
|
|
24
|
+
isSuspended: boolean;
|
|
25
|
+
session: ClientSession | null;
|
|
26
|
+
private subscriptionAcknowledgements;
|
|
27
|
+
private readonly subscriptionMap;
|
|
28
|
+
constructor(session: ClientSession);
|
|
29
|
+
/**
|
|
30
|
+
* the number of active subscriptions managed by this publish engine.
|
|
31
|
+
* @property subscriptionCount
|
|
32
|
+
* @type {Number}
|
|
33
|
+
*/
|
|
34
|
+
get subscriptionCount(): number;
|
|
35
|
+
suspend(suspendedState: boolean): void;
|
|
36
|
+
acknowledge_notification(subscriptionId: SubscriptionId, sequenceNumber: number): void;
|
|
37
|
+
cleanup_acknowledgment_for_subscription(subscriptionId: SubscriptionId): void;
|
|
38
|
+
/**
|
|
39
|
+
* @method send_publish_request
|
|
40
|
+
*/
|
|
41
|
+
send_publish_request(): void;
|
|
42
|
+
terminate(): void;
|
|
43
|
+
registerSubscription(subscription: ClientSubscription): void;
|
|
44
|
+
replenish_publish_request_queue(): void;
|
|
45
|
+
/**
|
|
46
|
+
* @method unregisterSubscription
|
|
47
|
+
*
|
|
48
|
+
* @param subscriptionId
|
|
49
|
+
*/
|
|
50
|
+
unregisterSubscription(subscriptionId: SubscriptionId): void;
|
|
51
|
+
getSubscriptionIds(): SubscriptionId[];
|
|
52
|
+
/***
|
|
53
|
+
* get the client subscription from Id
|
|
54
|
+
*/
|
|
55
|
+
getSubscription(subscriptionId: SubscriptionId): ClientSubscription;
|
|
56
|
+
hasSubscription(subscriptionId: SubscriptionId): boolean;
|
|
57
|
+
republish(callback: () => void): void;
|
|
58
|
+
internalSendPublishRequest(): void;
|
|
59
|
+
private _receive_publish_response;
|
|
60
|
+
private _republish;
|
|
61
|
+
private __repairSubscription;
|
|
62
|
+
}
|