@corvina/device-client 1.0.10
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/CHANGELOG.md +1 -0
- package/CONTRIBUTING.md +31 -0
- package/LICENSE +21 -0
- package/README.md +138 -0
- package/dist/common/types.d.ts +89 -0
- package/dist/common/types.js +65 -0
- package/dist/common/types.js.map +1 -0
- package/dist/device.module.d.ts +2 -0
- package/dist/device.module.js +41 -0
- package/dist/device.module.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/services/configparser.d.ts +232 -0
- package/dist/services/configparser.js +458 -0
- package/dist/services/configparser.js.map +1 -0
- package/dist/services/corvinadatainterface.d.ts +24 -0
- package/dist/services/corvinadatainterface.js +107 -0
- package/dist/services/corvinadatainterface.js.map +1 -0
- package/dist/services/device.service.d.ts +77 -0
- package/dist/services/device.service.js +464 -0
- package/dist/services/device.service.js.map +1 -0
- package/dist/services/devicerunner.interface.d.ts +3 -0
- package/dist/services/devicerunner.interface.js +3 -0
- package/dist/services/devicerunner.interface.js.map +1 -0
- package/dist/services/devicerunner.service.d.ts +8 -0
- package/dist/services/devicerunner.service.js +123 -0
- package/dist/services/devicerunner.service.js.map +1 -0
- package/dist/services/licensesaxiosinstance.d.ts +29 -0
- package/dist/services/licensesaxiosinstance.js +77 -0
- package/dist/services/licensesaxiosinstance.js.map +1 -0
- package/dist/services/logger.service.d.ts +8 -0
- package/dist/services/logger.service.js +9 -0
- package/dist/services/logger.service.js.map +1 -0
- package/dist/services/messagepublisher.d.ts +69 -0
- package/dist/services/messagepublisher.js +154 -0
- package/dist/services/messagepublisher.js.map +1 -0
- package/dist/services/messagepublisherpolicies.d.ts +222 -0
- package/dist/services/messagepublisherpolicies.js +499 -0
- package/dist/services/messagepublisherpolicies.js.map +1 -0
- package/dist/services/messagesender.d.ts +17 -0
- package/dist/services/messagesender.js +3 -0
- package/dist/services/messagesender.js.map +1 -0
- package/dist/services/messagesubscriber.d.ts +17 -0
- package/dist/services/messagesubscriber.js +32 -0
- package/dist/services/messagesubscriber.js.map +1 -0
- package/dist/services/simulation.d.ts +83 -0
- package/dist/services/simulation.js +610 -0
- package/dist/services/simulation.js.map +1 -0
- package/envs.md +67 -0
- package/package.json +105 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.DeviceRunnerService = void 0;
|
|
27
|
+
const types_1 = require("../common/types");
|
|
28
|
+
const fs = __importStar(require("fs"));
|
|
29
|
+
const path = __importStar(require("path"));
|
|
30
|
+
class DeviceRunnerService {
|
|
31
|
+
deviceService;
|
|
32
|
+
setAvailableStructures(availableTags) {
|
|
33
|
+
const structs = new Set();
|
|
34
|
+
availableTags.forEach((tag) => {
|
|
35
|
+
const pos = tag.name.indexOf(".");
|
|
36
|
+
if (pos >= 0) {
|
|
37
|
+
structs.add({ name: tag.name.slice(0, pos), type: "struct", simulation: null });
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
availableTags.push(...structs);
|
|
41
|
+
const result = new Map();
|
|
42
|
+
availableTags.forEach((t) => {
|
|
43
|
+
result.set(t.name, t);
|
|
44
|
+
});
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
constructor(deviceService) {
|
|
48
|
+
this.deviceService = deviceService;
|
|
49
|
+
console.log("Creating device runner service");
|
|
50
|
+
}
|
|
51
|
+
run() {
|
|
52
|
+
this.deviceService.setCycleTime(parseInt(process.env.CYCLE_TIME) || 1000);
|
|
53
|
+
const availableTagsFile = process.env.AVAILABLE_TAGS_FILE || "";
|
|
54
|
+
this.deviceService.reinit({
|
|
55
|
+
activationKey: process.env.ACTIVATION_KEY,
|
|
56
|
+
pairingEndpoint: process.env.PAIRING_ENDPOINT,
|
|
57
|
+
availableTagsFile: availableTagsFile,
|
|
58
|
+
availableTags: (() => {
|
|
59
|
+
try {
|
|
60
|
+
if (availableTagsFile.length) {
|
|
61
|
+
return this.setAvailableStructures(JSON.parse(fs.readFileSync(availableTagsFile).toString()));
|
|
62
|
+
}
|
|
63
|
+
return this.setAvailableStructures(JSON.parse(process.env.AVAILABLE_TAGS));
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
return new Map();
|
|
67
|
+
}
|
|
68
|
+
})(),
|
|
69
|
+
simulateTags: !!(() => {
|
|
70
|
+
try {
|
|
71
|
+
return JSON.parse(process.env.SIMULATE_TAGS);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
})(),
|
|
77
|
+
availableAlarms: (() => {
|
|
78
|
+
try {
|
|
79
|
+
const alarmsMap = new Map();
|
|
80
|
+
JSON.parse(process.env.AVAILABLE_ALARMS).forEach((a) => {
|
|
81
|
+
alarmsMap.set(a.name, a);
|
|
82
|
+
});
|
|
83
|
+
return alarmsMap;
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
return new Map();
|
|
87
|
+
}
|
|
88
|
+
})(),
|
|
89
|
+
simulateAlarms: !!(() => {
|
|
90
|
+
try {
|
|
91
|
+
return JSON.parse(process.env.SIMULATE_ALARMS);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
})(),
|
|
97
|
+
packetFormat: process.env.PACKET_FORMAT || types_1.PacketFormatEnum.BSON,
|
|
98
|
+
}, true);
|
|
99
|
+
const envFile = path.join(process.cwd(), ".env");
|
|
100
|
+
let currentContent = fs.readFileSync(envFile).toString();
|
|
101
|
+
const appendedValuesPos = currentContent.indexOf("### LAST-ENV ###");
|
|
102
|
+
const deviceConfig = this.deviceService.deviceConfig;
|
|
103
|
+
if (appendedValuesPos > 0) {
|
|
104
|
+
currentContent = currentContent.slice(0, appendedValuesPos);
|
|
105
|
+
currentContent += `
|
|
106
|
+
### LAST-ENV ###
|
|
107
|
+
# don't write below this line!!
|
|
108
|
+
ACTIVATION_KEY=${deviceConfig.activationKey}
|
|
109
|
+
PAIRING_ENDPOINT=${deviceConfig.pairingEndpoint}
|
|
110
|
+
AVAILABLE_TAGS_FILE=${deviceConfig.availableTagsFile || ""}
|
|
111
|
+
AVAILABLE_TAGS=${!deviceConfig.availableTagsFile || deviceConfig.availableTagsFile.length == 0
|
|
112
|
+
? JSON.stringify(Array.from(deviceConfig.availableTags.values()))
|
|
113
|
+
: ""}
|
|
114
|
+
SIMULATE_TAGS=${deviceConfig.simulateTags ? 1 : 0}
|
|
115
|
+
AVAILABLE_ALARMS=${JSON.stringify(Array.from(deviceConfig.availableAlarms.values()))}
|
|
116
|
+
SIMULATE_ALARMS=${deviceConfig.simulateAlarms ? 1 : 0}
|
|
117
|
+
PACKET_FORMAT=${deviceConfig.packetFormat}`;
|
|
118
|
+
}
|
|
119
|
+
fs.writeFileSync(envFile, currentContent);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.DeviceRunnerService = DeviceRunnerService;
|
|
123
|
+
//# sourceMappingURL=devicerunner.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devicerunner.service.js","sourceRoot":"","sources":["../../src/services/devicerunner.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface LicenseData {
|
|
2
|
+
realm: string;
|
|
3
|
+
logicalId: string;
|
|
4
|
+
apiKey: string;
|
|
5
|
+
platformPairingApiUrl: string;
|
|
6
|
+
brokerUrls: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface CrtData {
|
|
9
|
+
client_crt?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class PairingAxiosInstance {
|
|
12
|
+
private axiosInstance;
|
|
13
|
+
private licenseData;
|
|
14
|
+
constructor(licenseData: LicenseData);
|
|
15
|
+
doPairing(protocol: string, csr: string): Promise<CrtData>;
|
|
16
|
+
verify(protocol: string, crt: string): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
export declare class LicensesAxiosInstance {
|
|
19
|
+
private axiosInstance;
|
|
20
|
+
private axiosPairiginInstance;
|
|
21
|
+
private actitvationKey;
|
|
22
|
+
private pairingEndpoint;
|
|
23
|
+
private static protocol;
|
|
24
|
+
constructor(pairingEndpoint: string, activationKey: string);
|
|
25
|
+
init(): Promise<LicenseData>;
|
|
26
|
+
doPairing(csr: string): Promise<CrtData>;
|
|
27
|
+
verify(crt: string): Promise<boolean>;
|
|
28
|
+
}
|
|
29
|
+
export default LicensesAxiosInstance;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LicensesAxiosInstance = exports.PairingAxiosInstance = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
class PairingAxiosInstance {
|
|
9
|
+
axiosInstance = axios_1.default.create();
|
|
10
|
+
licenseData;
|
|
11
|
+
constructor(licenseData) {
|
|
12
|
+
this.licenseData = licenseData;
|
|
13
|
+
if (!this.licenseData.platformPairingApiUrl.startsWith("http")) {
|
|
14
|
+
this.licenseData.platformPairingApiUrl =
|
|
15
|
+
"https://api.platform.dev.maiaconnect.com/pairing/v1/" + this.licenseData.platformPairingApiUrl;
|
|
16
|
+
}
|
|
17
|
+
this.axiosInstance.defaults.baseURL = `${this.licenseData.platformPairingApiUrl}/devices/${this.licenseData.logicalId}`;
|
|
18
|
+
this.axiosInstance.defaults.headers = {
|
|
19
|
+
Authorization: `Bearer ${this.licenseData.apiKey}`,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
async doPairing(protocol, csr) {
|
|
23
|
+
const req = this.axiosInstance
|
|
24
|
+
.post(`/protocols/${protocol}/credentials`, { data: { csr: csr } })
|
|
25
|
+
.then((data) => {
|
|
26
|
+
return data.data.data;
|
|
27
|
+
});
|
|
28
|
+
return req;
|
|
29
|
+
}
|
|
30
|
+
async verify(protocol, crt) {
|
|
31
|
+
return this.axiosInstance
|
|
32
|
+
.post(`/protocols/${protocol}/credentials/verify`, {
|
|
33
|
+
data: { client_crt: crt },
|
|
34
|
+
})
|
|
35
|
+
.then((data) => {
|
|
36
|
+
return true;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.PairingAxiosInstance = PairingAxiosInstance;
|
|
41
|
+
class LicensesAxiosInstance {
|
|
42
|
+
axiosInstance = axios_1.default.create();
|
|
43
|
+
axiosPairiginInstance;
|
|
44
|
+
actitvationKey;
|
|
45
|
+
pairingEndpoint;
|
|
46
|
+
static protocol = "corvina_mqtt_v1";
|
|
47
|
+
constructor(pairingEndpoint, activationKey) {
|
|
48
|
+
this.pairingEndpoint = pairingEndpoint;
|
|
49
|
+
this.actitvationKey = activationKey;
|
|
50
|
+
console.log("License manager pairing endpoint ", this.pairingEndpoint);
|
|
51
|
+
this.axiosInstance.defaults.baseURL = this.pairingEndpoint;
|
|
52
|
+
}
|
|
53
|
+
async init() {
|
|
54
|
+
const config = {
|
|
55
|
+
params: { activationKey: this.actitvationKey, serialNumber: "" },
|
|
56
|
+
};
|
|
57
|
+
return this.axiosInstance.get("", config).then((data) => {
|
|
58
|
+
this.axiosPairiginInstance = new PairingAxiosInstance(data.data);
|
|
59
|
+
if (data.data.brokerUrls) {
|
|
60
|
+
data.data.brokerUrls = data.data.brokerUrls
|
|
61
|
+
.split(",")
|
|
62
|
+
.filter((u) => u.startsWith(LicensesAxiosInstance.protocol))
|
|
63
|
+
.map((u) => u.replace(LicensesAxiosInstance.protocol, "mqtts"));
|
|
64
|
+
}
|
|
65
|
+
return data.data;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
async doPairing(csr) {
|
|
69
|
+
return this.axiosPairiginInstance.doPairing(LicensesAxiosInstance.protocol, csr);
|
|
70
|
+
}
|
|
71
|
+
async verify(crt) {
|
|
72
|
+
return this.axiosPairiginInstance.verify(LicensesAxiosInstance.protocol, crt);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.LicensesAxiosInstance = LicensesAxiosInstance;
|
|
76
|
+
exports.default = LicensesAxiosInstance;
|
|
77
|
+
//# sourceMappingURL=licensesaxiosinstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licensesaxiosinstance.js","sourceRoot":"","sources":["../../src/services/licensesaxiosinstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface DeviceLoggerService {
|
|
2
|
+
log(message: any, ...optionalParams: any[]): any;
|
|
3
|
+
error(message: any, ...optionalParams: any[]): any;
|
|
4
|
+
warn(message: any, ...optionalParams: any[]): any;
|
|
5
|
+
debug?(message: any, ...optionalParams: any[]): any;
|
|
6
|
+
}
|
|
7
|
+
export declare const setLogger: (_l: DeviceLoggerService) => void;
|
|
8
|
+
export declare let l: DeviceLoggerService;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.l = exports.setLogger = void 0;
|
|
4
|
+
const setLogger = (_l) => {
|
|
5
|
+
exports.l = _l;
|
|
6
|
+
};
|
|
7
|
+
exports.setLogger = setLogger;
|
|
8
|
+
exports.l = console;
|
|
9
|
+
//# sourceMappingURL=logger.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/services/logger.service.ts"],"names":[],"mappings":";;;AAmBO,MAAM,SAAS,GAAG,CAAC,EAAuB,EAAE,EAAE;IACjD,SAAC,GAAG,EAAE,CAAC;AACX,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB;AAES,QAAA,CAAC,GAAwB,OAAO,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { MessagePublisherPolicy, State, StateTS } from "./messagepublisherpolicies";
|
|
2
|
+
import { InternalMessageSenderOptions, MessageSender } from "./messagesender";
|
|
3
|
+
export declare class MessagePublisher {
|
|
4
|
+
protected _topic: string;
|
|
5
|
+
protected _topicType: string;
|
|
6
|
+
protected _tagName: string;
|
|
7
|
+
protected _modelPath: string;
|
|
8
|
+
protected _nextTime: StateTS;
|
|
9
|
+
protected _policy: MessagePublisherPolicy;
|
|
10
|
+
protected _armed: boolean;
|
|
11
|
+
protected _stateToPublish: State;
|
|
12
|
+
protected _lastStateVersion: number;
|
|
13
|
+
protected _lastPublishedStateVersion: number;
|
|
14
|
+
private _messageSender;
|
|
15
|
+
constructor({ sourceTag, modelPath, topic, topicType, }: {
|
|
16
|
+
sourceTag: string;
|
|
17
|
+
modelPath: string;
|
|
18
|
+
topic: string;
|
|
19
|
+
topicType: string;
|
|
20
|
+
});
|
|
21
|
+
get policy(): MessagePublisherPolicy;
|
|
22
|
+
get modelPath(): string;
|
|
23
|
+
setPolicy(policy: MessagePublisherPolicy): void;
|
|
24
|
+
update({ tagName, newState, currentTime }: {
|
|
25
|
+
tagName: string;
|
|
26
|
+
newState: State;
|
|
27
|
+
currentTime: StateTS;
|
|
28
|
+
}): StateTS;
|
|
29
|
+
rearm(currentTime: StateTS): StateTS;
|
|
30
|
+
nextTime(currentTime: StateTS): StateTS;
|
|
31
|
+
publish(currentTime: StateTS, messageSender: MessageSender, options?: InternalMessageSenderOptions): void;
|
|
32
|
+
get topic(): string;
|
|
33
|
+
get topicType(): string;
|
|
34
|
+
get tagName(): string;
|
|
35
|
+
toString(): string;
|
|
36
|
+
}
|
|
37
|
+
export declare class AggregatedMessagePublisher extends MessagePublisher {
|
|
38
|
+
private _recomputePolicy;
|
|
39
|
+
constructor({ sourceTag, modelPath, topic }: {
|
|
40
|
+
sourceTag: string;
|
|
41
|
+
modelPath: string;
|
|
42
|
+
topic: string;
|
|
43
|
+
});
|
|
44
|
+
get modelPath(): string;
|
|
45
|
+
addField({ tagName, fieldName, type }: {
|
|
46
|
+
tagName: string;
|
|
47
|
+
fieldName: string;
|
|
48
|
+
type: string;
|
|
49
|
+
}): void;
|
|
50
|
+
update({ tagName, newState, currentTime }: {
|
|
51
|
+
tagName: string;
|
|
52
|
+
newState: State;
|
|
53
|
+
currentTime: StateTS;
|
|
54
|
+
}): StateTS;
|
|
55
|
+
publish(currentTime: StateTS, messageSender: MessageSender, options?: InternalMessageSenderOptions): void;
|
|
56
|
+
toString(): string;
|
|
57
|
+
get fields(): {
|
|
58
|
+
tagName: any;
|
|
59
|
+
fieldName: any;
|
|
60
|
+
type: any;
|
|
61
|
+
lastValueToPublish: any;
|
|
62
|
+
}[];
|
|
63
|
+
protected _fields: {
|
|
64
|
+
tagName: any;
|
|
65
|
+
fieldName: any;
|
|
66
|
+
type: any;
|
|
67
|
+
lastValueToPublish: any;
|
|
68
|
+
}[];
|
|
69
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AggregatedMessagePublisher = exports.MessagePublisher = void 0;
|
|
4
|
+
const types_1 = require("../common/types");
|
|
5
|
+
const messagepublisherpolicies_1 = require("./messagepublisherpolicies");
|
|
6
|
+
class MessagePublisher {
|
|
7
|
+
_topic;
|
|
8
|
+
_topicType;
|
|
9
|
+
_tagName;
|
|
10
|
+
_modelPath;
|
|
11
|
+
_nextTime;
|
|
12
|
+
_policy;
|
|
13
|
+
_armed;
|
|
14
|
+
_stateToPublish;
|
|
15
|
+
_lastStateVersion = 0;
|
|
16
|
+
_lastPublishedStateVersion = 0;
|
|
17
|
+
_messageSender;
|
|
18
|
+
constructor({ sourceTag, modelPath, topic, topicType, }) {
|
|
19
|
+
this._tagName = sourceTag;
|
|
20
|
+
this._modelPath = modelPath;
|
|
21
|
+
this._topic = topic;
|
|
22
|
+
this._topicType = topicType;
|
|
23
|
+
this._tagName = sourceTag;
|
|
24
|
+
this._nextTime = -1;
|
|
25
|
+
this._policy = null;
|
|
26
|
+
this._armed = false;
|
|
27
|
+
this._stateToPublish = new messagepublisherpolicies_1.State();
|
|
28
|
+
}
|
|
29
|
+
get policy() {
|
|
30
|
+
return this._policy;
|
|
31
|
+
}
|
|
32
|
+
get modelPath() {
|
|
33
|
+
return this._modelPath;
|
|
34
|
+
}
|
|
35
|
+
setPolicy(policy) {
|
|
36
|
+
this._policy = policy.clone();
|
|
37
|
+
}
|
|
38
|
+
update({ tagName, newState, currentTime }) {
|
|
39
|
+
this._lastStateVersion++;
|
|
40
|
+
if (tagName == this._tagName) {
|
|
41
|
+
this._stateToPublish.timestamp = newState.timestamp;
|
|
42
|
+
this._stateToPublish.value = (0, types_1.castCorvinaType)(newState.value, this._topicType);
|
|
43
|
+
}
|
|
44
|
+
if (this._policy) {
|
|
45
|
+
this._nextTime = this._policy.updateState({
|
|
46
|
+
tagName,
|
|
47
|
+
newState,
|
|
48
|
+
currentTime,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this._nextTime = -1;
|
|
53
|
+
}
|
|
54
|
+
return this._nextTime;
|
|
55
|
+
}
|
|
56
|
+
rearm(currentTime) {
|
|
57
|
+
if (this._policy) {
|
|
58
|
+
this._nextTime = this._policy.rearm(currentTime);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this._nextTime = -1;
|
|
62
|
+
}
|
|
63
|
+
this._armed = true;
|
|
64
|
+
return this._nextTime;
|
|
65
|
+
}
|
|
66
|
+
nextTime(currentTime) {
|
|
67
|
+
if (!this._armed) {
|
|
68
|
+
return this.rearm(currentTime);
|
|
69
|
+
}
|
|
70
|
+
return this._nextTime;
|
|
71
|
+
}
|
|
72
|
+
publish(currentTime, messageSender, options) {
|
|
73
|
+
const ts = this._lastPublishedStateVersion == this._lastStateVersion ? Date.now() : this._stateToPublish.timestamp;
|
|
74
|
+
if (!ts) {
|
|
75
|
+
if (options?.cb) {
|
|
76
|
+
options.cb(new Error("Nothing to send"), undefined);
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
messageSender.sendMessage(this._topic, {
|
|
81
|
+
t: ts,
|
|
82
|
+
v: this._stateToPublish.value,
|
|
83
|
+
}, options);
|
|
84
|
+
this._lastPublishedStateVersion = this._lastStateVersion;
|
|
85
|
+
this.rearm(currentTime);
|
|
86
|
+
}
|
|
87
|
+
get topic() {
|
|
88
|
+
return this._topic;
|
|
89
|
+
}
|
|
90
|
+
get topicType() {
|
|
91
|
+
return this._topicType;
|
|
92
|
+
}
|
|
93
|
+
get tagName() {
|
|
94
|
+
return this._tagName;
|
|
95
|
+
}
|
|
96
|
+
toString() {
|
|
97
|
+
return `MessagePublisher@${this._tagName} => ${this._topic} ( ${this._policy ? this._policy.toString() : "NULL"})`;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.MessagePublisher = MessagePublisher;
|
|
101
|
+
class AggregatedMessagePublisher extends MessagePublisher {
|
|
102
|
+
_recomputePolicy = false;
|
|
103
|
+
constructor({ sourceTag, modelPath, topic }) {
|
|
104
|
+
super({ sourceTag, modelPath, topic, topicType: "struct" });
|
|
105
|
+
this._fields = [];
|
|
106
|
+
}
|
|
107
|
+
get modelPath() {
|
|
108
|
+
return this._modelPath;
|
|
109
|
+
}
|
|
110
|
+
addField({ tagName, fieldName, type }) {
|
|
111
|
+
this._fields.push({
|
|
112
|
+
tagName,
|
|
113
|
+
fieldName,
|
|
114
|
+
type,
|
|
115
|
+
lastValueToPublish: undefined,
|
|
116
|
+
});
|
|
117
|
+
this._recomputePolicy = true;
|
|
118
|
+
}
|
|
119
|
+
update({ tagName, newState, currentTime }) {
|
|
120
|
+
if (this._policy && this._recomputePolicy) {
|
|
121
|
+
this._fields.forEach((f) => {
|
|
122
|
+
if (f.tagName == tagName) {
|
|
123
|
+
f.lastValueToPublish = (0, types_1.castCorvinaType)(newState.value, f.type);
|
|
124
|
+
this._stateToPublish.timestamp = newState.timestamp;
|
|
125
|
+
}
|
|
126
|
+
this._policy.setFieldTagName({
|
|
127
|
+
fieldName: f.fieldName,
|
|
128
|
+
tagName: f.tagName,
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
this._policy = this._policy.multiTagVersion(this._fields.map((f) => f.tagName));
|
|
132
|
+
}
|
|
133
|
+
return super.update({ tagName, newState, currentTime });
|
|
134
|
+
}
|
|
135
|
+
publish(currentTime, messageSender, options) {
|
|
136
|
+
const ts = this._lastPublishedStateVersion == this._lastStateVersion ? Date.now() : this._stateToPublish.timestamp;
|
|
137
|
+
const x = this._stateToPublish.value || {};
|
|
138
|
+
this._fields.forEach((f) => {
|
|
139
|
+
x[f.fieldName] = f.lastValueToPublish;
|
|
140
|
+
});
|
|
141
|
+
messageSender.sendMessage(this._topic, { t: ts, v: x }, options);
|
|
142
|
+
this._lastPublishedStateVersion = this._lastStateVersion;
|
|
143
|
+
this.rearm(currentTime);
|
|
144
|
+
}
|
|
145
|
+
toString() {
|
|
146
|
+
return `AggregatedMessagePublisher@${this._tagName} => ${this._topic} ( ${this._policy ? this._policy.toString() : "NULL"})`;
|
|
147
|
+
}
|
|
148
|
+
get fields() {
|
|
149
|
+
return this._fields;
|
|
150
|
+
}
|
|
151
|
+
_fields;
|
|
152
|
+
}
|
|
153
|
+
exports.AggregatedMessagePublisher = AggregatedMessagePublisher;
|
|
154
|
+
//# sourceMappingURL=messagepublisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messagepublisher.js","sourceRoot":"","sources":["../../src/services/messagepublisher.ts"],"names":[],"mappings":"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"}
|