-- -- EEEEEEEEEE GGGGGG TTTTTTTTTTTTTT -- EEEEEEEEEE GGGGGGGGGG TTTTTTTTTTTTTT -- EEEE GGGG GGGG TTTT -- EEEE GGGG TTTT -- EEEEEEE GGGG GGGGGGG TTTT -- EEEEEEE GGGG GGGGGGG TTTT -- EEEE GGGG GGGG TTTT -- EEEE GGGG GGGG TTTT -- EEEEEEEEEE GGGGGGGGGG TTTT -- EEEEEEEEEE GGGGGG TTTT -- -- BeamWallVerifyPipe by Egalware s.r.l. 2025/12/02 -- Questo script gestisce le richieste le richieste di verifica travi che arrivano da LUX require( 'EgtBase') _ENV = EgtProtectGlobal() EgtEnableDebug( false) -- modalita' di chiamata QUESTION_MODES = { NULL = 0, PREVIEW = 1, BOM = 2, HARDWARE = 3, CONFIG = 4, ORDER = 5, VERIFY = 6, } QUESTION_ORDER_SUBMODES = { NULL = 0, CREATE = 1, ESTIMATE = 2, CONFIRM = 3, } _G.package.loaded.JSON = nil local JSON = require( 'JSON') local sIniFilePath = EgtGetIniFile() local sScriptDir = EgtGetStringFromIni( 'Lux', 'ScriptDir', '', sIniFilePath) EgtAddToPackagePath( sScriptDir .. '\\?.lua') local sBaseDir = EgtGetStringFromIni( 'Beam', 'BaseDir', '', sIniFilePath) EgtAddToPackagePath( sBaseDir .. '\\?.lua') _G.package.loaded.BeamWallPipeLib = nil local BeamWallPipeLib = require( 'BeamWallPipeLib') -- Connessiona a Redis local bRedisConnect, nRedisConnectionId = EgtRedisAsyncConnect( ENG.Param2) if bRedisConnect then EgtOutLog('Connessione con il server Redis dal Lua effettuata con successo con Id=' .. nRedisConnectionId .. '!') else nRedisConnectionId = 0 EgtOutLog('Errore! Impossibile connettersi con il server Redis dal Lua!') end -- funzione che verifica un bwe local function Calc_Verify( QuestionArgs) local nResult, AnswerArgs = BeamWallPipeLib.VerifyBeam( QuestionArgs) return nResult, AnswerArgs end -- funzione che esegue il nesting local function Calc_Nesting( QuestionArgs) local nResult, AnswerArgs = BeamWallPipeLib.NestBeam( QuestionArgs) return nResult, AnswerArgs end local nErr = 999 local nNilCount = 0 local bRun = true -- ciclo principale che analizza le richieste while bRun do local sReadLine = io.stdin:read( 'l') EgtOutLog( 'Letta riga da stdin') if sReadLine then if sReadLine == 'quit' then EgtOutLog( 'Chiusura processo') break end if sReadLine ~= '' and sReadLine:find( '^#8477271#') and sReadLine:find( '#8477271#$') then EgtOutLog( 'Lettura istruzione valida') sReadLine = string.sub( sReadLine, 10, #sReadLine - 9) local Question = JSON:decode( sReadLine) local nThreadIndex = -1 local nId = -1 local ExecEnvironment = -1 local nResult = 0 local AnswerArgs = {} if Question and Question.nThreadIndex and Question.nId and Question.Args then nThreadIndex = tonumber( Question["nThreadIndex"]) nId = tonumber( Question["nId"]) ExecEnvironment = tonumber( Question["ExecEnvironment"]) local QuestionArgs = Question["Args"] if QuestionArgs and QuestionArgs.Mode and QuestionArgs.UID then local sUid = QuestionArgs["UID"] local sRUID = QuestionArgs["RUID"] local nMode = tonumber( QuestionArgs["Mode"]) -- esecuzione della corretta modilita' EgtOutLog('Ricevuta richiesta calcolo: nThreadIndex=' .. nThreadIndex .. ', nId=' .. nId .. ', UID=' .. sUid .. ', nMode=' .. nMode) local Result = {} if nMode == QUESTION_MODES.VERIFY then _G.LUX = {} LUX.REDISID = nRedisConnectionId nResult, AnswerArgs = Calc_Verify( QuestionArgs) if AnswerArgs then AnswerArgs.OutputChannel = QuestionArgs["OutputChannel"] EgtOutLog('OutputChannel=' .. AnswerArgs.OutputChannel) end end AnswerArgs.UID = sUid AnswerArgs.RUID = sRUID or 0 else nResult = 0 local sErrorMsg = 'Errore! Domanda senza argomenti o senza UID o Mode che sono obbligatori!' AnswerArgs = { Error = sErrorMsg} EgtOutLog( sErrorMsg) end else nResult = 0 local sErrorMsg = 'Errore! Formato domanda non riconosciuto o senza nThreadIndex, nId o Args!' AnswerArgs = { Error = sErrorMsg} EgtOutLog( sErrorMsg) end -- do risultato local Result = { nThreadIndex = nThreadIndex, nId = nId, ExecEnvironment = ExecEnvironment, nResult = nResult, Args = AnswerArgs} -- invio risposta EgtOutLog( 'Invio risposta') local JsonResult = JSON:encode( Result) io.stdout:write( "#8376261#" .. JsonResult .. "#8376261#" .. '\n') io.stdout:flush() EgtOutLog( 'Risposta inviata') EgtNewFile() end else if nNilCount >= 20 then bRun = false EgtOutLog( 'Errore! Lettura da stdin fallita!') end nNilCount = nNilCount + 1 EgtPause( 100, true) end end EgtRedisAsyncDisconnect( nRedisConnectionId)