Commit 4b417d1c authored by Kamron Aroonrua's avatar Kamron Aroonrua 💬

transform register

parent 3ab3e3ee
#Changelog
## [1.2.3] - 2019-11-19
### Added
- PLUGIN :: dt-transform register
- BS :: Configuration Context with ENV
- PLUGIN :: do-http
- PLUGIN :: do-bsspeak
......
module.exports.create = function (regis)
{
return new MemsRegister(regis);
}
function MemsRegister(regis)
{
this._register = {};
if(typeof regis == 'object' && regis != null){
this._register = regis;
}
}
MemsRegister.prototype.init = function(name,val){
var value = (val)?val:'';
if(typeof this._register[name]=='undefined'){
this._register[name]=value;
}
}
MemsRegister.prototype.get = function(name){
if(name){
return this._register[name];
}
return this._register;
}
MemsRegister.prototype.set= function(name,val){
if(name){
this._register[name]=val;
}
}
MemsRegister.prototype.reset= function(name){
if(name){
delete this._register[name];
}else{
this._register={};
}
}
MemsRegister.prototype.init_counter = function(name,val){
if(!name){return;}
if(typeof this._register[name]!='number'){
this._register[name]=(typeof val == 'number')?val:0;
}
}
MemsRegister.prototype.inc = function(name,val){
if(!name){return;}
if(typeof val != 'number'){val=1}
if(typeof this._register[name]!='number'){
this.init_counter(name);
}
this._register[name]+=val;
}
\ No newline at end of file
var vm = require('vm');
var ctx = require('../context');
var Utils = ctx.getLib('lib/util/plugin-utils');
var Register = ctx.getLib('jobworker/lib/mems-register');
function perform_function(context,request,response){
var job_id = context.jobconfig.job_id;
var transaction_id = context.transaction.id;
var param = context.task.config.param;
var param = context.task.config.param || {};
var memstore = context.task.memstore
var in_type = request.input_type;
var in_data = request.data;
var in_meta = request.meta;
var mapscr = Utils.parse_script_param(param.script);
var datascr = param.text ;
var ba64script = param.ba64script;
if(datascr){
mapscr = mapscr + "; data=`" + datascr + "`";
}
var mapenv = {
'src' : {
'type' : in_type,
......@@ -31,6 +24,52 @@ function perform_function(context,request,response){
'data' : in_data,
'meta' : in_meta
}
if(param.use_register){
memstore.getItem('register',function(err,value){
if(err){return response.error("memstore error");}
if(typeof value == 'object' && value!=null)
{
mapenv.register = Register.create(value);
}
mapenv = _compile(mapenv,param);
memstore.setItem('register',mapenv.register.get(),function(err){
_response();
});
});
}else{
mapenv = _compile(mapenv,param);
_response();
}
function _response()
{
var data = mapenv.data;
var meta = mapenv.meta;
var output_type = mapenv.type;
if(param.to_binary && typeof data == 'string'){
data = Buffer.from(data, 'base64');
output_type = 'binary';
}
response.success(data,{'meta':meta,'output_type':output_type});
}
}
function _compile(mape,param)
{
var mapenv = mape;
var mapscr = Utils.parse_script_param(param.script);
var datascr = param.text ;
var ba64script = param.ba64script;
if(datascr){
mapscr = mapscr + "; data=`" + datascr + "`";
}
var context = new vm.createContext(mapenv);
......@@ -43,18 +82,7 @@ function perform_function(context,request,response){
var script = new vm.Script(mapscr);
script.runInContext(context);
var data = mapenv.data;
var meta = mapenv.meta;
var output_type = mapenv.type;
if(param.to_binary && typeof data == 'string'){
data = Buffer.from(data, 'base64');
output_type = 'binary';
}
response.success(data,{'meta':meta,'output_type':output_type});
return mapenv;
}
module.exports = perform_function;
{
"version":"1.2.3",
"build":"202002211200"
"build":"202003061200"
}
\ 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