kontrol
Version:
Make easier the use of events
86 lines (56 loc) • 1.97 kB
JavaScript
var fs = require('fs'),
EventEmitter = require('events').EventEmitter;
var LogEventos = function(args){
var clase = this;
clase.emisorLocal = new EventEmitter();
var datosEnLog = [],
rutaLog = args.ruta,
clase = this;
if( !(args.emisor && args.ruta) )
throw new Error('No se puede crear un objeto tipo LogEventos '
+'si no se especifica ni un emisor ni una ruta');
var emisor = args.emisor;
//Evento para escribir en log
clase.emisorLocal.on("escrituraAsincrona", function( d ){
fs.appendFileSync(d.rutaLog, d.datosEnLog);
});
var numero = 0;
var Dato = function(escritura){
this.numero = ++numero;
this.escritura = escritura;
}
fs.writeFileSync( args.ruta, '' );
//Evento con el que se agrega un evento para escribir en el log
clase.emisorLocal.on('setEvento--', function( args ){
var nombreEvento = args.nombreEvento,
datosEvento = args.datosEvento;
//Evento del cual se escribirá su contenido en el log
emisor.on( nombreEvento , function( data ){
//Datos que se escribiran en el log
var datos = Object.getOwnPropertyNames( data );
if( datosEvento ){
datos = datosEvento;
}
var escritura = {};
for( dato in datos ){
escritura[ datos[dato] ] = data[ datos[dato] ];
}
var toWrite = {};
toWrite.rutaLog = rutaLog;
toWrite.datosEnLog = JSON.stringify( new Dato(escritura) )
clase.emisorLocal.emit( "escrituraAsincrona" , toWrite );
});
});
LogEventos.prototype.guardarEvento = function( args ){
if( !args ) return;
if( !Array.isArray(args) )
args = [args];
var eventos = args;
for( var num=0; num<eventos.length; num++ ){
var nombreT = eventos[num].nombre;
var datosT = eventos[num].datos;
clase.emisorLocal.emit('setEvento--',{ nombreEvento:nombreT , datosEvento:datosT });
}
}
}
exports.LogEventos = LogEventos;