From 492563d6f330777a9b78be2a27cb864931dd0128 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Sun, 9 Sep 2018 07:39:13 +0200 Subject: [PATCH] Fixing errors with Aborted, Failed and Cancelled state transitions. The handling was wrong, causing the root handlers not being called anymore, causing the task not being able to fail, cancel, abort. --- Moose Development/Moose/Core/Fsm.lua | 17 +++++++++++++++-- .../Moose/Tasking/Task_A2A_Dispatcher.lua | 6 +++--- .../Moose/Tasking/Task_A2G_Dispatcher.lua | 6 +++--- .../Moose/Tasking/Task_Cargo_Dispatcher.lua | 6 +++--- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/Moose Development/Moose/Core/Fsm.lua b/Moose Development/Moose/Core/Fsm.lua index a4a833da2..7469a3726 100644 --- a/Moose Development/Moose/Core/Fsm.lua +++ b/Moose Development/Moose/Core/Fsm.lua @@ -981,8 +981,9 @@ do -- FSM_PROCESS self:T( "*** FSM *** " .. step .. " *** " .. params[1] .. " --> " .. params[2] .. " --> " .. params[3] .. " *** Task: " .. self.Task:GetName() .. ", TaskUnit: " .. self.Controllable:GetName() ) end self._EventSchedules[EventName] = nil + local Result, Value if self.Controllable and self.Controllable:IsAlive() == true then - local Result, Value = xpcall( function() return self[handler]( self, self.Controllable, self.Task, unpack( params ) ) end, ErrorHandler ) + Result, Value = xpcall( function() return self[handler]( self, self.Controllable, self.Task, unpack( params ) ) end, ErrorHandler ) end return Value --return self[handler]( self, self.Controllable, unpack( params ) ) @@ -1204,10 +1205,22 @@ do -- FSM_TASK function FSM_TASK:_call_handler( step, trigger, params, EventName ) local handler = step .. trigger + local ErrorHandler = function( errmsg ) + + env.info( "Error in SCHEDULER function:" .. errmsg ) + if BASE.Debug ~= nil then + env.info( BASE.Debug.traceback() ) + end + + return errmsg + end + if self[handler] then self:T( "*** FSM *** " .. step .. " *** " .. params[1] .. " --> " .. params[2] .. " --> " .. params[3] .. " *** Task: " .. self.TaskName ) self._EventSchedules[EventName] = nil - return self[handler]( self, unpack( params ) ) + --return self[handler]( self, unpack( params ) ) + local Result, Value = xpcall( function() return self[handler]( self, unpack( params ) ) end, ErrorHandler ) + return Value end end diff --git a/Moose Development/Moose/Tasking/Task_A2A_Dispatcher.lua b/Moose Development/Moose/Tasking/Task_A2A_Dispatcher.lua index 8f85ef7d2..44db945c7 100644 --- a/Moose Development/Moose/Tasking/Task_A2A_Dispatcher.lua +++ b/Moose Development/Moose/Tasking/Task_A2A_Dispatcher.lua @@ -574,15 +574,15 @@ do -- TASK_A2A_DISPATCHER self:Success( Task ) end - function Task.onenterCancelled( Task, From, Event, To ) + function Task.OnEnterCancelled( Task, From, Event, To ) self:Cancelled( Task ) end - function Task.onenterFailed( Task, From, Event, To ) + function Task.OnEnterFailed( Task, From, Event, To ) self:Failed( Task ) end - function Task.onenterAborted( Task, From, Event, To ) + function Task.OnEnterAborted( Task, From, Event, To ) self:Aborted( Task ) end diff --git a/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua b/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua index 13cd2c5e7..499efcf89 100644 --- a/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua +++ b/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua @@ -775,15 +775,15 @@ do -- TASK_A2G_DISPATCHER self:Success( Task ) end - function Task.onenterCancelled( Task, From, Event, To ) + function Task.OnEnterCancelled( Task, From, Event, To ) self:Cancelled( Task ) end - function Task.onenterFailed( Task, From, Event, To ) + function Task.OnEnterFailed( Task, From, Event, To ) self:Failed( Task ) end - function Task.onenterAborted( Task, From, Event, To ) + function Task.OnEnterAborted( Task, From, Event, To ) self:Aborted( Task ) end diff --git a/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua b/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua index d1473dd4d..e82ac8ba3 100644 --- a/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua +++ b/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua @@ -686,15 +686,15 @@ do -- TASK_CARGO_DISPATCHER self:Success( Task ) end - function Transport.Task.onenterCancelled( Task, From, Event, To ) + function Transport.Task.OnEnterCancelled( Task, From, Event, To ) self:Cancelled( Task ) end - function Transport.Task.onenterFailed( Task, From, Event, To ) + function Transport.Task.OnEnterFailed( Task, From, Event, To ) self:Failed( Task ) end - function Transport.Task.onenterAborted( Task, From, Event, To ) + function Transport.Task.OnEnterAborted( Task, From, Event, To ) self:Aborted( Task ) end end