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.

This commit is contained in:
FlightControl 2018-09-09 07:39:13 +02:00
parent 69934a8cae
commit 492563d6f3
4 changed files with 24 additions and 11 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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