@contrast/reporter
Set up agent IO.
Reporting in the agent follows the PUB-SUB model. Reporters are nothing more than subscribers of messages published by the various agent components. Reporters can collect messages of interest and do with them what they will.
If a reporter want's to communicate with the agent, e.g. send it new settings to update feature behaviors, then it will publish the appropirate message to which the agent component is listening.
Main Ideas
-
Like other services, core will compose @contrast/reporters
into the dependency container object.
const { reporters } require('@contrast/core')();
-
Clients can than await
any reporter initialization code and respond to any errors.
try {
await reporters.install();
} catch (error) {
}
-
Other than that, it's just plugging into the agent's event stream.
module.exports = function(deps) {
return {
async install() {
await this.startup(deps);
await this.appCreate(deps);
['InputAnalysis', 'BlockAtPerimeter', 'SinkEvent', 'HTTPRequest'].forEach((msgName) => {
deps.messages.on(msgName, (msg) => {
putInQueueAndReportLater(msgName, msg);
});
});
}
};
};