systemquery/src/lib/SystemQuery.mjs

51 lines
1 KiB
JavaScript
Raw Normal View History

"use strict";
import Agent from './agent/Agent.mjs';
import InfoBroker from './core/InfoBroker.mjs';
class SystemQuery {
constructor(config) {
this.config = config;
this.info = new InfoBroker();
}
async init() {
///
// 1: Create agent
///
this.agent = new Agent(this.config);
await this.agent.init();
///
// 2: Attach listeners
///
this.agent.on("message-query", this.handle_query.bind(this));
this.agent.on("message-query-response", this.handle_query_response.bind(this));
}
async handle_query(peer, msg) {
// 1: Validate input
if(typeof msg.table !== "string"
|| !this.info.is_valid_table(msg.table)) return;
// 2: Fetch system info
let table = await this.info.fetch_table(msg.table);
if(table === null) return;
// 3: Return to requester
await peer.send("query-response", { result: table });
}
async handle_query_response(peer, msg) {
}
}
SystemQuery.Create = async function(config) {
let result = new SystemQuery(config);
await result.init();
return result;
}
export default SystemQuery;