debade-agent
Version:
Debade Agent Daemon
85 lines (78 loc) • 2.25 kB
JavaScript
var fs = require('fs');
var callbacks_file = '/etc/lib/debade/callbacks.db';
var rpc = require('./callback/http-jsonrpc');
var rest = require('./callback/rest');
var log = require('./log').log;
var write = function(pData) {
try {
fs.writeFileSync(callbacks_file, JSON.stringify(pData), {
'encoding': 'utf-8'
});
}
catch (error) {
log(error);
return false;
}
return true;
};
var getAll = function() {
var iCallbacks = [];
if (fs.existsSync(callbacks_file)) {
try {
iCallbacks = JSON.parse(fs.readFileSync(callbacks_file, {encoding: 'utf-8'}));
}
catch(e) {
}
}
return iCallbacks;
};
var set = function(pData) {
log('set callback: ' + JSON.stringify(pData));
var iCallbacks = getAll();
iCallbacks = iCallbacks.filter(function(pObject) {
if (pObject.channel===pData.channel && pObject.callback===pData.callback) {
return false;
}
return true;
});
iCallbacks.push(pData);
return write(iCallbacks);
};
var unset = function(pData) {
log('unset callback: ' + JSON.stringify(pData));
var iCallbacks = getAll();
var iHas = false, iResult = false;
iCallbacks = iCallbacks.filter(function(pObject) {
if (pObject.channel===pData.channel && pObject.callback===pData.callback) {
iHas = true;
return false;
}
return true;
});
if (iHas) {
iResult = write(iCallbacks);
}
return iResult;
};
var run = function(pMethod, pData, pCallback) {
// 将message提交给callback进行处理
var iData = pData.data;
var iCallback = pMethod.callback;
var iIndex = iCallback.indexOf(':');
var iCType = iCallback.substr(0, iIndex);
iCallback = JSON.parse(iCallback.substr(iIndex + 1));
switch (iCType) {
case 'rest':
rest.run(iCallback, iData, pCallback);
break;
case 'http-jsonrpc':
rpc.run(iCallback, iData, pCallback);
break;
default:
log('Callback Type <' + iCType + '> Not Exists!');
}
};
exports.getAll = getAll;
exports.set = set;
exports.unset = unset;
exports.run = run;