package Ġcom . at large . opend c . simulator Ċ Ċ /** Ċ Ġ* ĠA Ġprocess Ġis Ġdynamic Ġentity Ġwithin Ġa Ġsimulation , Ġthat Ġinteract s Ġwith Ġthe Ġmodel Ġenvironment Ġby Ġthe Ġinter change Ġof Ċ Ġ* Ġmessages . Ċ Ġ* Ċ Ġ* Ġ@ param ĠS ĠThe Ġshape Ġof Ġthe Ġobservable Ġstate Ġof Ġthe Ġprocess . Ċ Ġ* Ġ@ param ĠM ĠThe Ġshape Ġof Ġthe Ġmodel Ġin Ġwhich Ġthe Ġprocess Ġexists . Ċ Ġ* Ġ@ author ĠF ab ian ĠM ast en bro ek Ġ( f . s . mast en bro ek @ student . t ude lf t . nl ) Ċ Ġ*/ Ċ interface ĠProcess < S , Ġin ĠM > Ġ: ĠEntity < S > Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġinvoked Ġto Ġstart Ġthe Ġsimulation Ġa Ġprocess . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġis Ġassumed Ġto Ġbe Ġrunning Ġduring Ġa Ġsimulation , Ġbut Ġshould Ġhand Ġback Ġcontrol Ġto Ġthe Ġsimulator Ġat ĊĠĠĠĠ Ġ* Ġsome Ġpoint Ġby Ġsus pending Ġthe Ġprocess . ĠThis Ġallows Ġother Ġprocesses Ġto Ġdo Ġwork Ġat Ġthe Ġcurrent Ġpoint Ġin Ġtime Ġof Ġthe ĊĠĠĠĠ Ġ* Ġsimulation . ĊĠĠĠĠ Ġ* ĠS us pending Ġthe Ġprocess Ġcan Ġbe Ġachieved Ġby Ġcalling Ġsus pending Ġmethod Ġin Ġthe Ġcontext : ĊĠĠĠĠ Ġ* Ġ ĉ - Ġ[ Context . hold ] ĉ - ĠHold Ġfor Ġ` n ` Ġunits Ġof Ġtime Ġbefore Ġres uming Ġexecution . ĊĠĠĠĠ Ġ* Ġ ĉ - Ġ[ Context . receive ] ĉ - ĠWait Ġfor Ġa Ġmessage Ġto Ġbe Ġreceived Ġin Ġthe Ġmailbox Ġof Ġthe Ġ[ Entity ] Ġbefore Ġres uming ĊĠĠĠĠ Ġ* Ġ ĉ execution . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġthis Ġmethod Ġexits Ġearly , Ġbefore Ġthe Ġsimulation Ġhas Ġfinished , Ġthe Ġentity Ġis Ġassumed Ġto Ġbe Ġshutdown Ġand Ġits ĊĠĠĠĠ Ġ* Ġsimulation Ġwill Ġnot Ġrun Ġany Ġfurther . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun ĠContext < S , ĠM >. run () Ċ } Ċ