Commit e32112da authored by Kamron Aroonrua's avatar Kamron Aroonrua 💬

Merge branch 'ondev-gcs' into 'dev'

Ondev gcs

See merge request !19
parents 7a6492e0 4b417d1c
#Changelog #Changelog
## [1.2.3] - 2019-11-19 ## [1.2.3] - 2019-11-19
### Added ### Added
- PLUGIN :: dt-transform register
- BS :: Configuration Context with ENV - BS :: Configuration Context with ENV
- PLUGIN :: do-http - PLUGIN :: do-http
- PLUGIN :: do-bsspeak - 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 vm = require('vm');
var ctx = require('../context'); var ctx = require('../context');
var Utils = ctx.getLib('lib/util/plugin-utils'); var Utils = ctx.getLib('lib/util/plugin-utils');
var Register = ctx.getLib('jobworker/lib/mems-register');
function perform_function(context,request,response){ function perform_function(context,request,response){
var job_id = context.jobconfig.job_id; var job_id = context.jobconfig.job_id;
var transaction_id = context.transaction.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 memstore = context.task.memstore
var in_type = request.input_type; var in_type = request.input_type;
var in_data = request.data; var in_data = request.data;
var in_meta = request.meta; 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 = { var mapenv = {
'src' : { 'src' : {
'type' : in_type, 'type' : in_type,
...@@ -32,17 +25,25 @@ function perform_function(context,request,response){ ...@@ -32,17 +25,25 @@ function perform_function(context,request,response){
'meta' : in_meta 'meta' : in_meta
} }
var context = new vm.createContext(mapenv); if(param.use_register){
memstore.getItem('register',function(err,value){
if(ba64script && typeof ba64script == 'string'){ if(err){return response.error("memstore error");}
var strScript = Buffer.from(ba64script, 'base64').toString('utf8'); if(typeof value == 'object' && value!=null)
var b64s = new vm.Script(strScript); {
b64s.runInContext(context); mapenv.register = Register.create(value);
}
mapenv = _compile(mapenv,param);
memstore.setItem('register',mapenv.register.get(),function(err){
_response();
});
});
}else{
mapenv = _compile(mapenv,param);
_response();
} }
var script = new vm.Script(mapscr); function _response()
script.runInContext(context); {
var data = mapenv.data; var data = mapenv.data;
var meta = mapenv.meta; var meta = mapenv.meta;
var output_type = mapenv.type; var output_type = mapenv.type;
...@@ -53,8 +54,35 @@ function perform_function(context,request,response){ ...@@ -53,8 +54,35 @@ function perform_function(context,request,response){
} }
response.success(data,{'meta':meta,'output_type':output_type}); 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);
if(ba64script && typeof ba64script == 'string'){
var strScript = Buffer.from(ba64script, 'base64').toString('utf8');
var b64s = new vm.Script(strScript);
b64s.runInContext(context);
}
var script = new vm.Script(mapscr);
script.runInContext(context);
return mapenv;
}
module.exports = perform_function; module.exports = perform_function;
{ {
"version":"1.2.3", "version":"1.2.3",
"build":"201911191500" "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