Commit 974b5289 authored by Tobias Steiner's avatar Tobias Steiner
Browse files

Add new build

parent b9dff19a
......@@ -51,11 +51,12 @@ declare class Core {
*/
getNconf(): any;
/**
* Get a singeltone reporter instance
* @param {number} interval
* Get a singleton reporter instance with a specific name
* @param {number | string} nameOrInterval The interval or a shortcut for the name
* @param {string} name
* @returns {Reporter}
*/
getReporter(interval?: number): InterfaceReporter;
getReporter(nameOrInterval?: number | string, name?: string): InterfaceReporter;
/**
* Get uri builder
* @returns {UrlBuilder}
......
......@@ -8,16 +8,11 @@ const uri_builder_1 = require("./uri-builder");
const reporter_1 = require("./reporter");
const fs = require("fs");
class Core {
/**
* Factory to create a core-instance
* @param {string} name
* @param {string} configPath
* @returns {Core}
*/
static init(name, configPath) {
return new Core(name, configPath);
}
constructor(name, configPath) {
/**
* Reporter for an app
*/
this.reporter = [];
this.name = name;
this.configPath = configPath;
/**
......@@ -42,6 +37,15 @@ class Core {
const loggerInstance = new logger_1.default(nconf.get('log-dir'));
this.logger = loggerInstance.getLogger();
}
/**
* Factory to create a core-instance
* @param {string} name
* @param {string} configPath
* @returns {Core}
*/
static init(name, configPath) {
return new Core(name, configPath);
}
/**
* Returns a Kafka instance
* @returns {KafkaGeoname}
......@@ -63,15 +67,26 @@ class Core {
return nconf;
}
/**
* Get a singeltone reporter instance
* @param {number} interval
* Get a singleton reporter instance with a specific name
* @param {number | string} nameOrInterval The interval or a shortcut for the name
* @param {string} name
* @returns {Reporter}
*/
getReporter(interval = 10000) {
if (!this.reporter) {
this.reporter = new reporter_1.Reporter(this, interval);
getReporter(nameOrInterval = 10000, name = 'default') {
let interval = 10000;
if (typeof nameOrInterval === 'number') {
interval = nameOrInterval;
}
else {
name = nameOrInterval;
}
let reporter = this.reporter.find((r) => r.name === name);
if (typeof reporter === 'undefined') {
reporter = { name, reporter: new reporter_1.Reporter(this, interval) };
this.reporter.push(reporter);
}
return this.reporter;
// just return the reporter
return reporter.reporter;
}
/**
* Get uri builder
......@@ -82,4 +97,4 @@ class Core {
}
}
exports.default = Core;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQWdDO0FBQ2hDLGdEQUFpRDtBQUNqRCxxQ0FBbUQ7QUFDbkQsbURBQW9FO0FBRXBFLCtDQUF1QztBQUN2Qyx5Q0FBdUQ7QUFDdkQseUJBQTBCO0FBVzFCO0lBRUU7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQVksRUFBRSxVQUFrQjtRQUNqRCxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBc0JELFlBQVksSUFBWSxFQUFFLFVBQWtCO1FBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCOztXQUVHO1FBQ0gsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXBCOztXQUVHO1FBQ0gsS0FBSyxDQUFDLElBQUksRUFBRTthQUNULEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVaOztXQUVHO1FBQ0gsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzdCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztTQUNoQztRQUVEOzs7V0FHRztRQUNILE1BQU0sY0FBYyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLHVCQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxXQUFtQixLQUFLO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM5QztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUkscUJBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUFFRCxrQkFBZSxJQUFJLENBQUMifQ==
\ No newline at end of file
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQWdDO0FBQ2hDLGdEQUFpRDtBQUNqRCxxQ0FBbUQ7QUFDbkQsbURBQW9FO0FBRXBFLCtDQUF1QztBQUN2Qyx5Q0FBb0Y7QUFDcEYseUJBQTBCO0FBVzFCO0lBZ0NFLFlBQVksSUFBWSxFQUFFLFVBQWtCO1FBTDVDOztXQUVHO1FBQ0ssYUFBUSxHQUFrQyxFQUFFLENBQUM7UUFHbkQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0I7O1dBRUc7UUFDSCxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFcEI7O1dBRUc7UUFDSCxLQUFLLENBQUMsSUFBSSxFQUFFO2FBQ1QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRVo7O1dBRUc7UUFDSCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQ7OztXQUdHO1FBQ0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBekREOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsVUFBa0I7UUFDakQsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQW1ERDs7O09BR0c7SUFDSSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSx1QkFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksV0FBVyxDQUFDLGlCQUFrQyxLQUFLLEVBQUUsT0FBZSxTQUFTO1FBQ2xGLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRTtZQUN0QyxRQUFRLEdBQUcsY0FBYyxDQUFDO1NBQzNCO2FBQU07WUFDTCxJQUFJLEdBQUcsY0FBYyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFDbkMsUUFBUSxHQUFHLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUI7UUFDRCwyQkFBMkI7UUFDM0IsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxxQkFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQUVELGtCQUFlLElBQUksQ0FBQyJ9
\ No newline at end of file
import { InterfaceCore } from './core';
export interface InterfaceKafkaGeoname {
init(): any;
getProducer(): any;
getConsumerStream(): any;
getConsumer(): any;
getProducer(name?: string): any;
getConsumerStream(name?: string): any;
getConsumer(name?: string): any;
getKafkaAvro(): any;
}
export default class KafkaGeoname implements InterfaceKafkaGeoname {
......@@ -13,12 +13,12 @@ export default class KafkaGeoname implements InterfaceKafkaGeoname {
*/
private kafkaAvro;
/**
* A producer instanance or null
* An object with a collection of producer instances
* @type {null}
*/
private producer;
/**
* A consumer stream or null
* An object with a collection of consumer streams
* @type {null}
*/
private consumerStream;
......@@ -35,6 +35,7 @@ export default class KafkaGeoname implements InterfaceKafkaGeoname {
*/
/**
*
* todo: better DI
* @param {string} name
* @param core
*/
......@@ -49,17 +50,17 @@ export default class KafkaGeoname implements InterfaceKafkaGeoname {
* Get a kafka producer. The config is provided by nconf
* @returns {Promise<any>}
*/
getProducer(): Promise<any>;
getProducer(name?: string): Promise<any>;
/**
* Get a consumer stream
* @returns {Promise<any>}
*/
getConsumerStream(): Promise<any>;
getConsumerStream(name?: string): Promise<any>;
/**
* get a classic consumer, subscribed to a topic
* @returns {Promise<any>}
*/
getConsumer(): Promise<any>;
getConsumer(name?: string): Promise<any>;
/**
* Get the kafkaAvro instance
* @returns {any}
......@@ -73,10 +74,10 @@ export default class KafkaGeoname implements InterfaceKafkaGeoname {
* Get a promise with a producer
* @returns {Promise<any>}
*/
private createProducer();
private createProducer(name);
/**
* Create a consumer stream and register error handling
* @returns {Promise<any>}
*/
private createConsumerStream();
private createConsumerStream(name);
}
This diff is collapsed.
......@@ -7,6 +7,13 @@ export interface InterfaceReporter {
setDataOut(data: number): void;
destory(): void;
}
/**
* Interface for a collection of reporters. Used in the core.
*/
export interface InterfaceReporterCollection {
name: string;
reporter: InterfaceReporter;
}
/**
* Class for the reporter
*/
......@@ -36,12 +43,26 @@ export declare class Reporter implements InterfaceReporter {
* @type {number}
*/
private dataOut;
/**
* A cpu usage estimation
* @type {null}
*/
private lastCpuUsage;
/**
* Reference to the core
*/
private readonly core;
constructor(core: InterfaceCore, interval: number);
/**
* An optional name
*/
private name;
/**
*
* @param {InterfaceCore} core
* @param {number} interval
* @param {string} name An optional name for the reporting
*/
constructor(core: InterfaceCore, interval: number, name?: string);
/**
* Set consumed data since the last call
* @param {number} data
......@@ -76,4 +97,8 @@ export declare class Reporter implements InterfaceReporter {
* @returns {AxiosPromise<any>}
*/
private registerApp();
/**
* Get the name for the app on the dashboard
*/
private appName();
}
......@@ -7,7 +7,13 @@ const cpuStat = require("cpu-stat");
* Class for the reporter
*/
class Reporter {
constructor(core, interval) {
/**
*
* @param {InterfaceCore} core
* @param {number} interval
* @param {string} name An optional name for the reporting
*/
constructor(core, interval, name) {
/**
* Intervall to send data to the reporter
* @type {number}
......@@ -33,9 +39,14 @@ class Reporter {
* @type {number}
*/
this.dataOut = 0;
/**
* A cpu usage estimation
* @type {null}
*/
this.lastCpuUsage = null;
this.interval = interval;
this.core = core;
this.name = name;
// register the app
this.registerApp().then(() => {
this.core.getLogger().debug('Successful registered the app for tracking');
......@@ -43,7 +54,7 @@ class Reporter {
// start reporting every interval ms
this.intervalIndex = setInterval(this.sendStatus.bind(this), this.interval);
}, (err) => {
this.core.getLogger().error('Error while sending status update');
this.core.getLogger().error('Error registering the app');
});
}
/**
......@@ -71,7 +82,7 @@ class Reporter {
* Send data to the reporter dashboard
*/
sendStatus() {
axios_1.default.post(`${this.core.getNconf().get('reporter:url')}/app/${os.hostname()}`, {
axios_1.default.post(`${this.core.getNconf().get('reporter:url')}/app/${this.appName()}`, {
dataIn: this.dataIn,
dataOut: this.dataOut,
interval: this.interval,
......@@ -115,10 +126,19 @@ class Reporter {
registerApp() {
return axios_1.default.post(`${this.core.getNconf().get('reporter:url')}/app`, {
name: this.core.name,
hostname: os.hostname(),
hostname: this.appName(),
configuration: this.core.getNconf(),
});
}
/**
* Get the name for the app on the dashboard
*/
appName() {
if (typeof this.name !== 'undefined') {
return `${os.hostname()}.${this.name}`;
}
return os.hostname();
}
}
exports.Reporter = Reporter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBMEI7QUFDMUIseUJBQTBCO0FBQzFCLG9DQUFxQztBQWFyQzs7R0FFRztBQUNIO0lBa0NFLFlBQVksSUFBbUIsRUFBRSxRQUFnQjtRQWpDakQ7OztXQUdHO1FBQ2MsYUFBUSxHQUFXLEtBQUssQ0FBQztRQUMxQzs7O1dBR0c7UUFDSyxrQkFBYSxHQUFXLElBQUksQ0FBQztRQUVyQzs7O1dBR0c7UUFDSyxvQkFBZSxHQUFXLElBQUksQ0FBQztRQUN2Qzs7O1dBR0c7UUFDSyxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQzNCOzs7V0FHRztRQUNLLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFFcEIsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFPbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2RixvQ0FBb0M7WUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1QsSUFBSSxDQUFD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
\ No newline at end of file
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBMEI7QUFDMUIseUJBQTBCO0FBQzFCLG9DQUFxQztBQW9CckM7O0dBRUc7QUFDSDtJQTRDRTs7Ozs7T0FLRztJQUNILFlBQVksSUFBbUIsRUFBRSxRQUFnQixFQUFFLElBQWE7UUFqRGhFOzs7V0FHRztRQUNjLGFBQVEsR0FBVyxLQUFLLENBQUM7UUFDMUM7OztXQUdHO1FBQ0ssa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFFckM7OztXQUdHO1FBQ0ssb0JBQWUsR0FBVyxJQUFJLENBQUM7UUFDdkM7OztXQUdHO1FBQ0ssV0FBTSxHQUFXLENBQUMsQ0FBQztRQUMzQjs7O1dBR0c7UUFDSyxZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBRTVCOzs7V0FHRztRQUNLLGlCQUFZLEdBQVcsSUFBSSxDQUFDO1FBbUJsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLG9DQUFvQztZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJ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
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment