From 2ff9dfb0b505e5fb04ed2ed4183e51cd396cb21e Mon Sep 17 00:00:00 2001 From: "Infineon\\StieberD" Date: Mon, 31 Mar 2025 17:31:32 -0700 Subject: [PATCH] minor bug fix in RDS_ACTIONS and minor change to procedure queue system --- LSL2/STPROC/RDS_ACTIONS.txt | 5 +++-- LSL2/STPROC/SERVICE_SERVICES.txt | 33 +++++++++++++++++++------------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/LSL2/STPROC/RDS_ACTIONS.txt b/LSL2/STPROC/RDS_ACTIONS.txt index c1f4f99..df2ba68 100644 --- a/LSL2/STPROC/RDS_ACTIONS.txt +++ b/LSL2/STPROC/RDS_ACTIONS.txt @@ -955,11 +955,11 @@ WRITE_RECORD: WMIKeys = {WM_IN_KEY} For each WMIKey in WMIKeys using @VM setting vPos CassNo = Field(WMIKey, '*', 3) - Service_Services('PostProcedure', 'SCHEDULE_SERVICES':@VM:'MarkCassProcessed':@VM:WONo:@VM:CassNo:@VM:DatetimeOut) + Service_Services('PostProcedure', 'SCHEDULE_SERVICES', 'MarkCassProcessed':@VM:WONo:@VM:CassNo:@VM:DatetimeOut) Next WMIKey end else CassNo = Record - Service_Services('PostProcedure', 'SCHEDULE_SERVICES':@VM:'MarkCassProcessed':@VM:WONo:@VM:CassNo:@VM:DatetimeOut) + Service_Services('PostProcedure', 'SCHEDULE_SERVICES', 'MarkCassProcessed':@VM:WONo:@VM:CassNo:@VM:DatetimeOut) end end @@ -1043,3 +1043,4 @@ Restore_System_Variables: return + diff --git a/LSL2/STPROC/SERVICE_SERVICES.txt b/LSL2/STPROC/SERVICE_SERVICES.txt index 105c0c1..a673f41 100644 --- a/LSL2/STPROC/SERVICE_SERVICES.txt +++ b/LSL2/STPROC/SERVICE_SERVICES.txt @@ -154,14 +154,18 @@ end service Service ProcessProcedureQueue() - + + // Loop through the procedure queue until we can find a process request that is not yet locked + // (i.e., already being crunched on by another engine). Process that one request and then end. Open 'PROC_QUEUE' to hProcQueue then Select hProcQueue - EOF = False$ + EOF = False$ + Done = False$ Loop ReadNext RequestKeyID else EOF = True$ - Until EOF + Until EOF or Done Lock hProcQueue, RequestKeyID then + Done = True$ Database_Services('GetKeyIDLock', 'PROC_QUEUE', RequestKeyId) RequestRow = Database_Services('ReadDataRow', 'PROC_QUEUE', RequestKeyID) If RequestRow NE '' then @@ -184,22 +188,25 @@ Service ProcessProcedureQueue() Case NumArguments EQ 7 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7)) Case NumArguments EQ 8 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8)) Case NumArguments EQ 9 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9)) - Case NumArguments EQ 10 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10)) - Case Otherwise$ ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10), ProcParams(11)) + Case NumArguments EQ 10 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10)) + Case NumArguments EQ 11 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10), ProcParams(11)) + Case Otherwise$ + Error_Services('Add', 'Error in ':Service:' service. More than 11 arguments are not currently supported.') End Case end - end - If Error_Services('NoError') then - Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$) + If Error_Services('NoError') then + Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$) ; // This call will release the lock + end else + RequestRow = DateTime() + RequestRow = Error_Services('GetMessage') + Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, False$) ; // This call will release the lock + end end else - RequestRow = DateTime() - RequestRow = Error_Services('GetMessage') - Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, True$) + // Empty request, so delete it from the queue + Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$) ; // This call will release the lock end - Unlock hProcQueue, RequestKeyID else Null end Repeat - end end service