first version
This commit is contained in:
98
fromlog.js
Normal file
98
fromlog.js
Normal file
@@ -0,0 +1,98 @@
|
||||
var datadefinition = require("./fromlog.datadefinition" );
|
||||
var data = {};
|
||||
var fs = require('fs'),
|
||||
bite_size = 4096,
|
||||
save_interval_or_retry = 10000,
|
||||
filereadbytes,
|
||||
tempdata = "",
|
||||
fd;
|
||||
|
||||
function init(){
|
||||
fs.readFile('fromlog.counter',function(err, content){
|
||||
if (err){
|
||||
filereadbytes = 0;
|
||||
}else{
|
||||
filereadbytes = parseInt(content);
|
||||
if (isNaN(filereadbytes)){
|
||||
filereadbytes = 0;
|
||||
}
|
||||
}
|
||||
var oldfilereadbytes = filereadbytes;
|
||||
setInterval(function(){
|
||||
if (filereadbytes != oldfilereadbytes){
|
||||
fs.writeFile("fromlog.counter", filereadbytes.toString(),function(err){});
|
||||
oldfilereadbytes = filereadbytes;
|
||||
}
|
||||
}, save_interval_or_retry);
|
||||
openandreadsome();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function openandreadsome(){
|
||||
fs.open('fromlog.file', 'r',function(err, file){
|
||||
if (err){
|
||||
return setTimeout(openandreadsome, save_interval_or_retry);
|
||||
}
|
||||
fd = file;
|
||||
fs.fstat(file, function(err, stats){
|
||||
if (err || stats.size == filereadbytes){
|
||||
return fs.close(file,function(err){
|
||||
setTimeout(openandreadsome, save_interval_or_retry);
|
||||
});
|
||||
}
|
||||
if (stats.size < filereadbytes){
|
||||
filereadbytes =0;
|
||||
}
|
||||
readsome(stats);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function readsome(stats) {
|
||||
|
||||
fs.read(fd, Buffer.alloc(bite_size), 0, bite_size, filereadbytes, function(err, actualbytesread, buffer){
|
||||
if (err){
|
||||
return fs.close(fd,function(err){
|
||||
setTimeout(openandreadsome, save_interval_or_retry);
|
||||
});
|
||||
|
||||
}
|
||||
if(actualbytesread == 0) {
|
||||
return fs.close(fd,function(err){
|
||||
setTimeout(openandreadsome, save_interval_or_retry);
|
||||
});
|
||||
}
|
||||
processsome(actualbytesread,buffer);
|
||||
readsome(stats);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
function processsome(actualbytesread, buff) {
|
||||
var datastring = buff.toString('utf-8', 0, actualbytesread);
|
||||
tempdata+=datastring;
|
||||
var tempdatasplit = tempdata.split(/\r\n|\r|\n/);
|
||||
for (var i = 0; i < tempdatasplit.length - 1; i++) {
|
||||
data= datadefinition.extractdatafromline(data,tempdatasplit[i]);
|
||||
}
|
||||
tempdata = tempdatasplit[tempdatasplit.length - 1];
|
||||
filereadbytes+= actualbytesread;
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
init: function () {
|
||||
init();
|
||||
data= datadefinition.init(data);
|
||||
},
|
||||
data: function () {
|
||||
return data;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user