From 761053c95e62c294c416497f76b6d7b03f753efb Mon Sep 17 00:00:00 2001 From: FlightControl Date: Wed, 14 Dec 2016 06:58:24 +0100 Subject: [PATCH] Progress --- Moose Development/Moose/Core/Base.lua | 4 +- .../{Timer.lua => ScheduleDispatcher.lua} | 101 ++++++++++----- Moose Development/Moose/Core/Scheduler.lua | 116 +++++++++--------- Moose Development/Moose/Fsm/Fsm.lua | 5 +- Moose Development/Moose/Moose.lua | 6 +- Moose Development/Moose/Tasking/Task.lua | 1 + .../SCH-110 - Object Repeat Scheduling.miz | Bin 17991 -> 17981 bytes .../SCH-300 - GC Simple Object Scheduling.lua | 7 +- .../SCH-300 - GC Simple Object Scheduling.miz | Bin 18147 -> 23757 bytes .../TSK-010 - Task Modelling - SEAD.miz | Bin 28591 -> 27530 bytes 10 files changed, 137 insertions(+), 103 deletions(-) rename Moose Development/Moose/Core/{Timer.lua => ScheduleDispatcher.lua} (55%) diff --git a/Moose Development/Moose/Core/Base.lua b/Moose Development/Moose/Core/Base.lua index 194f44154..ebbfb67dd 100644 --- a/Moose Development/Moose/Core/Base.lua +++ b/Moose Development/Moose/Core/Base.lua @@ -132,7 +132,7 @@ function BASE:_SetDestructor() -- TODO: Okay, this is really technical... -- When you set a proxy to a table to catch __gc, weak tables don't behave like weak... -- Therefore, I am parking this logic until I've properly discussed all this with the community. - -- + --[[ local proxy = newproxy(true) local proxyMeta = getmetatable(proxy) @@ -147,7 +147,7 @@ function BASE:_SetDestructor() -- table is about to be garbage-collected - then the __gc hook -- will be invoked and the destructor called rawset( self, '__proxy', proxy ) - -- + --]] end --- This is the worker method to inherit from a parent class. diff --git a/Moose Development/Moose/Core/Timer.lua b/Moose Development/Moose/Core/ScheduleDispatcher.lua similarity index 55% rename from Moose Development/Moose/Core/Timer.lua rename to Moose Development/Moose/Core/ScheduleDispatcher.lua index 662506fc6..8193086bb 100644 --- a/Moose Development/Moose/Core/Timer.lua +++ b/Moose Development/Moose/Core/ScheduleDispatcher.lua @@ -1,10 +1,29 @@ ---- This module contains the TIMER class. +--- This module defines the SCHEDULEDISPATCHER class, which is used by a central object called _SCHEDULEDISPATCHER. -- -- === -- --- Takes care of scheduled function dispatching for defined in MOOSE classes. +-- Takes care of the creation and dispatching of scheduled functions for SCHEDULER objects. -- --- This function is complicated. +-- This class is tricky and needs some thorought explanation. +-- SCHEDULE classes are used to schedule functions for objects, or as persistent objects. +-- The SCHEDULEDISPATCHER class ensures that: +-- +-- - Scheduled functions are planned according the SCHEDULER object parameters. +-- - Scheduled functions are repeated when requested, according the SCHEDULER object parameters. +-- - Scheduled functions are automatically removed when the schedule is finished, according the SCHEDULER object parameters. +-- +-- The SCHEDULEDISPATCHER class will manage SCHEDULER object in memory during garbage collection: +-- - When a SCHEDULER object is not attached to another object (that is, it's first :Schedule() parameter is nil), then the SCHEDULER +-- object is _persistent_ within memory. +-- - When a SCHEDULER object *is* attached to another object, then the SCHEDULER object is _not persistent_ within memory after a garbage collection! +-- The none persistency of SCHEDULERS attached to objects is required to allow SCHEDULER objects to be garbage collectged, when the parent object is also desroyed or nillified and garbage collected. +-- Even when there are pending timer scheduled functions to be executed for the SCHEDULER object, +-- these will not be executed anymore when the SCHEDULER object has been destroyed. +-- +-- The SCHEDULEDISPATCHER allows multiple scheduled functions to be planned and executed for one SCHEDULER object. +-- The SCHEDULER object therefore keeps a table of "CallID's", which are returned after each planning of a new scheduled function by the SCHEDULEDISPATCHER. +-- The SCHEDULER object plans new scheduled functions through the @{Core.Scheduler#SCHEDULER.Schedule}() method. +-- The Schedule() method returns the CallID that is the reference ID for each planned schedule. -- -- === -- @@ -13,16 +32,16 @@ -- ### Contributions: - -- ### Authors: FlightControl : Design & Programming -- --- @module Timer +-- @module ScheduleDispatcher ---- The TIMER structure --- @type TIMER -TIMER = { - ClassName = "TIMER", +--- The SCHEDULEDISPATCHER structure +-- @type SCHEDULEDISPATCHER +SCHEDULEDISPATCHER = { + ClassName = "SCHEDULEDISPATCHER", CallID = 0, } -function TIMER:New() +function SCHEDULEDISPATCHER:New() local self = BASE:Inherit( self, BASE:New() ) self:F3() return self @@ -32,9 +51,9 @@ end -- The development of this method was really tidy. -- It is constructed as such that a garbage collection is executed on the weak tables, when the Scheduler is nillified. -- Nothing of this code should be modified without testing it thoroughly. --- @param #TIMER self +-- @param #SCHEDULEDISPATCHER self -- @param Core.Scheduler#SCHEDULER Scheduler -function TIMER:AddSchedule( Scheduler, ScheduleFunction, ScheduleArguments, Start, Repeat, Randomize, Stop ) +function SCHEDULEDISPATCHER:AddSchedule( Scheduler, ScheduleFunction, ScheduleArguments, Start, Repeat, Randomize, Stop ) self:F( { Scheduler, ScheduleFunction, ScheduleArguments, Start, Repeat, Randomize, Stop } ) self.CallID = self.CallID + 1 @@ -128,15 +147,13 @@ function TIMER:AddSchedule( Scheduler, ScheduleFunction, ScheduleArguments, Star ( Randomize * Repeat / 2 ) ) + 0.01 - self:T3( { ScheduleArguments, "Repeat:", CurrentTime, ScheduleTime } ) + self:T3( { Repeat = CallID, CurrentTime, ScheduleTime, ScheduleArguments } ) return ScheduleTime -- returns the next time the function needs to be called. else - timer.removeFunction( ScheduleID ) - ScheduleID = nil + self:Stop( Scheduler, CallID ) end else - timer.removeFunction( ScheduleID ) - ScheduleID = nil + self:Stop( Scheduler, CallID ) end else --self:E( "Scheduled obscolete call for CallID: " .. CallID ) @@ -145,29 +162,49 @@ function TIMER:AddSchedule( Scheduler, ScheduleFunction, ScheduleArguments, Star return nil end - - self.Schedule[Scheduler][self.CallID].ScheduleID = timer.scheduleFunction( - self.Schedule[Scheduler][self.CallID].CallHandler, - self.CallID, - timer.getTime() + self.Schedule[Scheduler][self.CallID].Start - ) + self:Start( Scheduler, self.CallID ) return self.CallID end -function TIMER:RemoveSchedule( CallID ) - self:F( CallID ) +function SCHEDULEDISPATCHER:RemoveSchedule( Scheduler, CallID ) + self:F( { Remove = CallID, Scheduler = Scheduler } ) - local Schedule = self.ObjectSchedulers[CallID] - - if Schedule then - local ScheduleID = Schedule.ScheduleID - timer.removeFunction( ScheduleID ) - ScheduleID = nil - Schedule = nil + if CallID then + self:Stop( Scheduler, CallID ) + self.Schedule[Scheduler][CallID] = nil + end +end + +function SCHEDULEDISPATCHER:Start( Scheduler, CallID ) + self:F( { Start = CallID, Scheduler = Scheduler } ) + + if CallID then + local Schedule = self.Schedule[Scheduler] + Schedule[CallID].ScheduleID = timer.scheduleFunction( + Schedule[CallID].CallHandler, + CallID, + timer.getTime() + Schedule[CallID].Start + ) + else + for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do + self:Start( Scheduler, CallID ) -- Recursive + end + end +end + +function SCHEDULEDISPATCHER:Stop( Scheduler, CallID ) + self:F( { Stop = CallID, Scheduler = Scheduler } ) + + if CallID then + local Schedule = self.Schedule[Scheduler] + timer.removeFunction( Schedule[CallID].ScheduleID ) + else + for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do + self:Stop( Scheduler, CallID ) -- Recursive + end end end - diff --git a/Moose Development/Moose/Core/Scheduler.lua b/Moose Development/Moose/Core/Scheduler.lua index ce54f70d8..2b953e3cb 100644 --- a/Moose Development/Moose/Core/Scheduler.lua +++ b/Moose Development/Moose/Core/Scheduler.lua @@ -1,36 +1,43 @@ --- This module contains the SCHEDULER class. -- --- 1) @{Core.Scheduler#SCHEDULER} class, extends @{Core.Base#BASE} --- ===================================================== --- The @{Core.Scheduler#SCHEDULER} class models time events calling given event handling functions. +-- # 1) @{Core.Scheduler#SCHEDULER} class, extends @{Core.Base#BASE} +-- +-- The @{Core.Scheduler#SCHEDULER} class creates schedule. -- --- 1.1) SCHEDULER constructor --- -------------------------- --- The SCHEDULER class is quite easy to use: +-- ## 1.1) SCHEDULER constructor +-- +-- The SCHEDULER class is quite easy to use, but note that the New constructor has variable parameters: -- --- * @{Core.Scheduler#SCHEDULER.New}: Setup a new scheduler and start it with the specified parameters. +-- * @{Core.Scheduler#SCHEDULER.New}( nil ): Setup a new SCHEDULER object, which is persistently executed after garbage collection. +-- * @{Core.Scheduler#SCHEDULER.New}( Object ): Setup a new SCHEDULER object, which is linked to the Object. When the Object is nillified or destroyed, the SCHEDULER object will also be destroyed and stopped after garbage collection. +-- * @{Core.Scheduler#SCHEDULER.New}( nil, Function, FunctionArguments, Start, ... ): Setup a new persistent SCHEDULER object, and start a new schedule for the Function with the defined FunctionArguments according the Start and sequent parameters. +-- * @{Core.Scheduler#SCHEDULER.New}( Object, Function, FunctionArguments, Start, ... ): Setup a new SCHEDULER object, linked to Object, and start a new schedule for the Function with the defined FunctionArguments according the Start and sequent parameters. +-- +-- ## 1.2) SCHEDULER timer stopping and (re-)starting. -- --- 1.2) SCHEDULER timer stop and start --- ----------------------------------- -- The SCHEDULER can be stopped and restarted with the following methods: -- --- * @{Core.Scheduler#SCHEDULER.Start}: (Re-)Start the scheduler. --- * @{Core.Scheduler#SCHEDULER.Stop}: Stop the scheduler. +-- * @{Core.Scheduler#SCHEDULER.Start}(): (Re-)Start the schedules within the SCHEDULER object. If a CallID is provided to :Start(), only the schedule referenced by CallID will be (re-)started. +-- * @{Core.Scheduler#SCHEDULER.Stop}(): Stop the schedules within the SCHEDULER object. If a CallID is provided to :Stop(), then only the schedule referenced by CallID will be stopped. -- --- 1.3) Reschedule new time event --- ------------------------------ --- With @{Core.Scheduler#SCHEDULER.Schedule} a new time event can be scheduled. +-- ## 1.3) Create a new schedule +-- +-- With @{Core.Scheduler#SCHEDULER.Schedule}() a new time event can be scheduled. This function is used by the :New() constructor when a new schedule is planned. -- -- === -- -- ### Contributions: -- --- * Mechanist : Concept & Testing +-- * FlightControl : Concept & Testing -- -- ### Authors: -- -- * FlightControl : Design & Programming -- +-- ### Test Missions: +-- +-- * SCH - Scheduler +-- -- === -- -- @module Scheduler @@ -55,19 +62,24 @@ SCHEDULER = { -- @param #number RandomizationFactor Specifies a randomization factor between 0 and 1 to randomize the RepeatSecondsInterval. -- @param #number StopSeconds Specifies the amount of seconds when the scheduler will be stopped. -- @return #SCHEDULER self +-- @return #number The ScheduleID of the planned schedule. function SCHEDULER:New( TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds ) local self = BASE:Inherit( self, BASE:New() ) self:F2( { StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds } ) - self:Schedule( TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds ) + local ScheduleID = nil + + if TimeEventFunction then + ScheduleID = self:Schedule( TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds ) + end - return self + return self, ScheduleID end --function SCHEDULER:_Destructor() -- --self:E("_Destructor") -- --- _TIMERDISPATCHER:RemoveSchedule( self.CallID ) +-- _SCHEDULEDISPATCHER:RemoveSchedule( self.CallID ) --end --- Schedule a new time event. Note that the schedule will only take place if the scheduler is *started*. Even for a single schedule event, the scheduler needs to be started also. @@ -79,7 +91,7 @@ end -- @param #number RepeatSecondsInterval Specifies the interval in seconds when the scheduler will call the event function. -- @param #number RandomizationFactor Specifies a randomization factor between 0 and 1 to randomize the RepeatSecondsInterval. -- @param #number StopSeconds Specifies the amount of seconds when the scheduler will be stopped. --- @return #SCHEDULER self +-- @return #number The ScheduleID of the planned schedule. function SCHEDULER:Schedule( TimeEventObject, TimeEventFunction, TimeEventFunctionArguments, StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds ) self:F2( { StartSeconds, RepeatSecondsInterval, RandomizationFactor, StopSeconds } ) self:T3( { TimeEventFunctionArguments } ) @@ -87,7 +99,7 @@ function SCHEDULER:Schedule( TimeEventObject, TimeEventFunction, TimeEventFuncti self.TimeEventObject = TimeEventObject - self.Schedules[#self.Schedules+1] = _TIMERDISPATCHER:AddSchedule( + local ScheduleID = _SCHEDULEDISPATCHER:AddSchedule( self, TimeEventFunction, TimeEventFunctionArguments, @@ -96,51 +108,37 @@ function SCHEDULER:Schedule( TimeEventObject, TimeEventFunction, TimeEventFuncti RandomizationFactor, StopSeconds ) - - return self -end - ---- (Re-)Starts the scheduler. --- @param #SCHEDULER self --- @return #SCHEDULER self -function SCHEDULER:Start() - self:F2() - - if self.RepeatSecondsInterval ~= 0 then - self.Repeat = true - end - if self.StartSeconds then - self:T( { self.StartSeconds } ) - self.Schedules[#self.Schedules+1] = _TIMERDISPATCHER:AddSchedule( - self, - self.TimeEventObject, - self.TimeEventFunction, - self.TimeEventFunctionArguments, - self.StartSeconds, - self.RepeatSecondsInterval, - self.RandomizationFactor, - self.StopSeconds - ) - end - - return self + self.Schedules[#self.Schedules+1] = ScheduleID + + return ScheduleID end ---- Stops the scheduler. +--- (Re-)Starts the schedules or a specific schedule if a valid ScheduleID is provided. -- @param #SCHEDULER self --- @return #SCHEDULER self -function SCHEDULER:Stop() - self:F2( self.TimeEventObject ) +-- @param #number ScheduleID (optional) The ScheduleID of the planned (repeating) schedule. +function SCHEDULER:Start( ScheduleID ) + self:F3( { ScheduleID } ) - self.Repeat = false - if self.ScheduleID then - self:E( "Stop Schedule" ) - timer.removeFunction( self.ScheduleID ) - end - self.ScheduleID = nil + _SCHEDULEDISPATCHER:Start( self, ScheduleID ) +end - return self +--- Stops the schedules or a specific schedule if a valid ScheduleID is provided. +-- @param #SCHEDULER self +-- @param #number ScheduleID (optional) The ScheduleID of the planned (repeating) schedule. +function SCHEDULER:Stop( ScheduleID ) + self:F3( { ScheduleID } ) + + _SCHEDULEDISPATCHER:Stop( self, ScheduleID ) +end + +--- Removes a specific schedule if a valid ScheduleID is provided. +-- @param #SCHEDULER self +-- @param #number ScheduleID (optional) The ScheduleID of the planned (repeating) schedule. +function SCHEDULER:Remove( ScheduleID ) + self:F3( { ScheduleID } ) + + _SCHEDULEDISPATCHER:Remove( self, ScheduleID ) end diff --git a/Moose Development/Moose/Fsm/Fsm.lua b/Moose Development/Moose/Fsm/Fsm.lua index 373b544c8..d7a894a70 100644 --- a/Moose Development/Moose/Fsm/Fsm.lua +++ b/Moose Development/Moose/Fsm/Fsm.lua @@ -58,6 +58,8 @@ do -- FSM self._EndStates = {} self._Scores = {} + self.CallScheduler = SCHEDULER:New( self ) + return self end @@ -313,7 +315,8 @@ do -- FSM self:E( { EventName = EventName } ) return function( self, DelaySeconds, ... ) self:T( "Delayed Event: " .. EventName ) - SCHEDULER:New( self, self._handler, { EventName, ... }, DelaySeconds ) + local CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) + self:T( { CallID = CallID } ) end end diff --git a/Moose Development/Moose/Moose.lua b/Moose Development/Moose/Moose.lua index b14d40bea..3dc6792af 100644 --- a/Moose Development/Moose/Moose.lua +++ b/Moose Development/Moose/Moose.lua @@ -7,7 +7,7 @@ Include.File( "Utilities/Utils" ) --- Core Classes Include.File( "Core/Base" ) Include.File( "Core/Scheduler" ) -Include.File( "Core/Timer") +Include.File( "Core/ScheduleDispatcher") Include.File( "Core/Event" ) Include.File( "Core/Menu" ) Include.File( "Core/Zone" ) @@ -64,8 +64,8 @@ Include.File( "Tasking/Task_A2G" ) --- Declare the event dispatcher based on the EVENT class _EVENTDISPATCHER = EVENT:New() -- Core.Event#EVENT ---- Declare the timer dispatcher based on the TIMER class -_TIMERDISPATCHER = TIMER:New() -- Core.Timer#TIMER +--- Declare the timer dispatcher based on the SCHEDULEDISPATCHER class +_SCHEDULEDISPATCHER = SCHEDULEDISPATCHER:New() -- Core.Timer#SCHEDULEDISPATCHER --- Declare the main database object, which is used internally by the MOOSE classes. _DATABASE = DATABASE:New() -- Database#DATABASE diff --git a/Moose Development/Moose/Tasking/Task.lua b/Moose Development/Moose/Tasking/Task.lua index 983a85d1d..f599dd00b 100644 --- a/Moose Development/Moose/Tasking/Task.lua +++ b/Moose Development/Moose/Tasking/Task.lua @@ -539,6 +539,7 @@ function TASK_BASE:RemoveStateMachine( TaskUnit ) self.Fsm[TaskUnit] = nil collectgarbage() + self:T( "Garbage Collected, Processes should be finalized now ...") end --- Checks if there is a FiniteStateMachine assigned to Task@{Unit} for @{Task} diff --git a/Moose Test Missions/SCH - Scheduler/SCH-110 - Object Repeat Scheduling/SCH-110 - Object Repeat Scheduling.miz b/Moose Test Missions/SCH - Scheduler/SCH-110 - Object Repeat Scheduling/SCH-110 - Object Repeat Scheduling.miz index d4b4e7d27e2d83ea50676604b6547adaab832fa9..1f2126a2b53ad63838467bd9d5a8cd0e9365088a 100644 GIT binary patch delta 2739 zcmV;k3QYCKi~+rj0kD8B4yijmN%H^z04f3i02ct0Fhv=Yr!EeE1`e9}4+I~&t*EF& zwhSNa2%))yu-KF&Wsc!@w`->byK3HYe}{9=&5cy4S0)p72e%OH11QfMnU>W@-0|1k z&%`_OYqBaaA!on1M3-8X9~>BdcuxPR_kb<=o5xR zz)XT!gZ%j(!55R8FSCCQ`(%w42><|TKmY&-0001OX>)UFZ*J{dUvJwu5`XWfF#Oa4 zX<=H#x_682LZBtu79xv2l1l3=_Peh{N;WkbnX)dI1dH}59S(=T z`NI)sNN-{(W1bHFIe78Mi$VVH%TS4UHT=Dx6#q9=GeSd^^U8n2V4XoTkz#O2gNO$* z6!BIC%Q#^#S4{mvlZ;(4$ukkMi`@sdd->Zi|9}2R@K#F>X1@(zz52)StS-`nBKOkX z#i6Ps6@MQ@-LP*eAU-P3|6d@^p~yea2CrWaSQ-uZ(zcOhH+IKT)oL~%pklV>hnZA- z({X;qY|US0Y1n^pwqdpBCUoU?xDpw|yoS*ICLLnXOWOMLG>W^1o?t2y>C0k;S9l~H z%F5pJwVPZ;;)PfP4z~k zHt>9GqB^|zG0r{;v`{W7leGX zp=rc~OLH@EzZphn$Y>P=U=Z3LTO0t4Q<;BHL&YBvm%S!{!xxf?yT>%rVMQ3FTzsV> z3LYO)bLG~+HxY=1K8SUzidZor@!-GbX?s8e`6YjE+ZWs{Qm*=y(fr6D@I|TGaJkKg zS)g{?hVk;*aq38URLw@CQ8x$4EyJB)hNDT9s|u_0PXgx4CqQx#-LAE|&2k zPGV)w%H9MrL@brn=(PRJ&g+$*$t^dTSY!!HLuAi_gReMH1~SrQ2!d$ke29W*_55>4*82Gn9nlJoArPW9 z95;|?6~|*p);f;QTSNWeE6ah-+D_|7AT+HWMBrOx{GO;)Bak|=3-~=%D@LF#wO-I< z+I2I`a|HKXgK8Xy`mNzj-|Q^ZZC-zaYyz|4P2;u(w^q+_WEwbNdi z2_t5j-(|Dhd<3c{Iv5Pd{;ROfIr1~m4{^di~rLSafuDIUaazI$WHl!$qye5!m<9c_L*gFi7&_jj;f1w03Q& zAeh@3jpX9m#4HM~aR7$HjQkK2#bMQIZQQ}M&ZBXlDj%aPIK+ca&@43$?-&OxKPn^* z<~k$!{g@})8dktQWqqr=*bRTb7Oj@t^M>oJ-c)5VsH+jsMoMnTKPM3j)>1 zZM6%+)`;snuRX%Q2Y27#z7aHRk8970YyWQ_*KIj>{ypbDP0lr!ldaL|w>Bo{>lAZC(}6fA(=i!0eeh-Y&6L;PoQxm?JfQE_1%Q82dKYYY+<5uW zgaqq4YhpuY)y~oeX}Tv%mDv3swq0Ca(UP{^azJ*$l2x2-kkCFFty+xN2NdE!i0ShO zCmaufAR3zY8$^^T<*DsG*iCJ3nW zUZ5s!Q17LnEOBBwM=*a)`(T>8Azg22oH`Lr5k#{-h-Pj?mo%l3JDO$)q-g`xp4vv4sGCJv%(qWSn1NAnO zMccZ=mxf?jo%BlUuuY2r`IM%0B@uy@8Z$-`c zxAJ5@nSeI>^C*8*3Tr%iozh{qUuAjW+95g~s!HjQ89(0&T0G%=v{D6L{$QZqE^gQK zzJsM6u2|`E-qm^MCn;H%E&gC73%mitpnahC^mbjmws^d%1>V77xbnK3ip+gRd9bnt zUIAjDF4uAD_TPimE%5#kgLKWrqC-qQSm6S1KT%9O(E)$b!__VD>J`KEUUZ1?hpb#W zB&)o@>wX+L-Y#{1_uZGx`{t(1VZ~KPqr6Trv|zlymAzv^R{hVanEf(b@!D$~^n$kJ zDQAS45G*a$C`C;xS+eNq1}ZMCHTL%pwDeQhkVQXj(YHa(XR|hMC4t6CCR#3ohwEJ= z`0-=WdX0ZS3)>35sGdT>G4r%hkAi27W_+`W%XT$<{ZNHfiL5yhf&oS-6|z)h-0?c@ zi4-hwovfZ###SzD{Q=(7Di^{|a~I{p`VRz?fTb(vkBXj1!#%i@)jX(W=}I%jx5Y0n zo~5z}bSGv#SOeX9W#t?i2P@XlJmDM}k@~7O-#Vhg=c`h*_r+>Ia zms*wYIxu|qoF3Orbb(B`4L|G9I%B;;e%^ssnW{6m`N}%Ab-9`@CB2a zFSCDj^<|TKmY&-0001OX>)UFZ*J{d-EZ5r7Ju(wVd$v^(!!GbiHkinDK-?n z?S>@X-OvpJEzvd+S@b2Tw9c^qeG)0z)FEZcy17msnkR=mJp7$c@{rVqa8778_+jwk zuNQ;j?~5lGS$Th!E#?2JRrR1)6tw)%*(86EM1I-np(vpdj~UsDXh~B1a)rgOD9!OT z<}_z9zTADlyO)1>#s9^R=&j@&&HnISz517T(PSAwmV0jRNGxhjVTlRd%E_b;@LcW5Wu8;u`nCf2ffa$%cP%~MUf zLEp->^*&L2!i%b%VVw6Dar6rXK0NWleUXbE1uTu?__A^L&eR^NlsQEH-X;0 zUNl_^Do`qC8R|A#6j}be{y?u%il!xolkZ9by;3K(u&yJv3g8u^d6rxixqyGs)E>u# z|3XqKDw<#Mn#3tqf-h0ZvF@-10Y1L=c}1QhX^Pn{is@#9vIH}iEXaIzpN5o${uj3GgSGhX*j+xP6W zS^25la+|Y7p5iRF#4MP&6@NmwKsARlrrPbNv((Lz(mZjj!c8p&Lqkux8jQ{b;tF4A z4kTNKYPdL1ZRWtBX#mADhoIFjRG>sYV<_N{*t*$P8xTDHzX<4n3W zXq?OO0ciDy(l=qN6bvHprC<<&A1cGZ<`GPcs#yvbK$ZDYx{*OG#S5T~eRGNU=99vVP)I$IbI#qeVX66v8QYs;|+c`8$ zstj#tQi>NEdY6Clg%F)G^~kWPlyGDqQKp9Rp-erRv>NYVE6sqevedVw)&QK-$VTPG zFlbbOLV=}VAvC@+9h6IXFr-xu46PweH-fa4=?sM_)3tkhYk8`ty($wXSRH;>hvjM! zs1MOWXXNi!g>6Am?16qHDgIRKEv_9)gGp{qe_6!nE#iN7tq^L0DBQ!)darSEbad4p z1#L21o+iU(qsC#j^-)>t=uQEQvy(ydYAfu4Q(1BsOQMqh-xMW-kCYZ03Alrh7Yk{z z4N{awf5)R2i)`(LigS6rq9z5`JpjXDM6uaPNL(Mu8h16V;}D5N?F&{CJH&%bP%RCL z;1~rgQfhxB262w1Zujdz^Xu^Ga<00hdPeTumUZXfv+fzaGi*J$WQ}@xzeDR;mwJml zO*!7-PM+kc6NrgF9r+_uvtPV#s=N;7{tyzt3TuBqF94LG`)Esv@$$ih1h@U#K!ay} zoFx?kgDIwYCfM%(5KN@HqV?Ni;DGEBrz?_gEDn3r2PK=J4=9TPA*RnCoNxjQoUjj^ zi5t#Om~BwDb7BfDm`1(q)(I44D}tP$Mix-xUZ6rZsCPKqAa>^jHMW47^a3?@gL=;y z!l{1~)5L;l+6U9z4e4f!2wZ$kL{kf*Ssz3*H=-+)p~US?GYh17FT(|HOrOg8K6lv7 zEtu4i#HpYH|K zO5@wIy5B3U!*g~UuwQ6tL^mp1UiW(?c6iKhLv{6ldd3f7k zLw7@Su^xP&40kZ6E!X?Kl6}x+0b&%1E?zc2S`6*?)GY;0kB4J@N|kWxPvNbo>i>UM z?aaqxaE$&u3YAhDXRlK_MEiBlc^B_^tSY5LX8e4|Q2B)OY^4gk{IP+0ySQ7UhYp&0 zyke!xeplw5pE<`}Lj2K67I*_@gZ2SEpu2VX+Twgw3%rA~;VSBK#B%o@<H8>Ab|79D)*(F%VTc>8I^v|}A0Jzm`cuU>7K-m?xK{+N|Zhh$Y0 zc-^-n#}7fB>%RN4d4IUc3s|H+(WovyR9iIK-^$)&#_RLXx|sdqt!U%1hV_EBqNzs2 zIb%30=crhXYhJuOsf`4wv^5I%547Y{*cc~2Z>?{G%xAMYZOs9ZG-oZB!QOv*moR#K zTeM!=pM`B1UDQvZjOzvYv{CkgXN{_VvmwCs+&L$2KI}%k^}E(56|Tf}y8U?b%UkyKd8X46*U7?3 zVRYf1bH-u4GY+$5oXzrihG2>7WC^7()=klV`}5*&t)u#Q_r*U@O9KRxz(pFfm^pF_ z1;$oEgY=URMOp!ylWIjP8+G+ytRD#g0BJw~00#g700000009610000$ldwfJ0fdv~ SMKl3TlNv@H2L3_-0001JI4AD_ diff --git a/Moose Test Missions/SCH - Scheduler/SCH-300 - GC Simple Object Scheduling/SCH-300 - GC Simple Object Scheduling.lua b/Moose Test Missions/SCH - Scheduler/SCH-300 - GC Simple Object Scheduling/SCH-300 - GC Simple Object Scheduling.lua index 852a01bdc..f5e5dab2d 100644 --- a/Moose Test Missions/SCH - Scheduler/SCH-300 - GC Simple Object Scheduling/SCH-300 - GC Simple Object Scheduling.lua +++ b/Moose Test Missions/SCH - Scheduler/SCH-300 - GC Simple Object Scheduling/SCH-300 - GC Simple Object Scheduling.lua @@ -42,24 +42,19 @@ end do local Test1 = TEST_BASE:New( "Hello World Test 1" ) -collectgarbage() Test1 = nil -collectgarbage() BASE:E( Test1 ) end -collectgarbage() local Test2 = TEST_BASE:New( "Hello World Test 2" ) -collectgarbage() BASE:E( Test2 ) local Test3 = TEST_BASE:New( "Hello World Test 3" ) Test3 = nil +BASE:E( Test3 ) collectgarbage() -BASE:E( Test3 ) - BASE:E( "Collect Garbage executed." ) BASE:E( "You should only see a Hello Worlld message for Test 2!" ) BASE:E( "Check if Test 1 and Test 3 are garbage collected!" ) \ No newline at end of file diff --git a/Moose Test Missions/SCH - Scheduler/SCH-300 - GC Simple Object Scheduling/SCH-300 - GC Simple Object Scheduling.miz b/Moose Test Missions/SCH - Scheduler/SCH-300 - GC Simple Object Scheduling/SCH-300 - GC Simple Object Scheduling.miz index 2cdac6499820380d22fa646923cfd223152da0eb..f0b44f7136c2d3bbef18dcdd966efcdbee27fe8c 100644 GIT binary patch delta 9108 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 O`jjYA@R0KStFEM0%tW9)X>t#;RfL2#Ay{g5> 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 diff --git a/Moose Test Missions/TSK - Task Modelling/TSK-010 - Task Modelling - SEAD/TSK-010 - Task Modelling - SEAD.miz b/Moose Test Missions/TSK - Task Modelling/TSK-010 - Task Modelling - SEAD/TSK-010 - Task Modelling - SEAD.miz index fb792174b3c43b3360275a851546b41274084691..15ec24d93950e2385a06dd44acb7d8a719d363ef 100644 GIT binary patch delta 25238 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 C?L)2r delta 26424 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

Mkq9>>b~2zYU- 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