소스 검색

disable event Adapter during run to completion step (#1990)

Andreas Mülder 7 년 전
부모
커밋
330c1f8ca7

+ 10 - 0
plugins/org.yakindu.sct.simulation.core.sexec/src/org/yakindu/sct/simulation/core/sexec/interpreter/DefaultExecutionFlowInterpreter.xtend

@@ -48,6 +48,7 @@ import org.yakindu.sct.model.stext.lib.StatechartAnnotations
 import org.yakindu.sct.simulation.core.engine.scheduling.ITimeTaskScheduler
 import org.yakindu.sct.simulation.core.engine.scheduling.ITimeTaskScheduler.TimeTask
 import org.yakindu.sct.simulation.core.util.ExecutionContextExtensions
+import org.yakindu.sct.simulation.core.sexec.container.EventDrivenSimulationEngine.EventDrivenCycleAdapter
 
 /**
  * 
@@ -152,6 +153,10 @@ class DefaultExecutionFlowInterpreter implements IExecutionFlowInterpreter, IEve
 	}
 
 	override runCycle() {
+		val cycleAdapter = EcoreUtil.getExistingAdapter(executionContext, EventDrivenCycleAdapter) as EventDrivenCycleAdapter
+		try {
+			if(cycleAdapter !== null )
+				executionContext.eAdapters.remove(cycleAdapter)
 		var Event event = null
 		do {
 			traceInterpreter.evaluate(beginRunCycleTrace, executionContext)
@@ -167,9 +172,14 @@ class DefaultExecutionFlowInterpreter implements IExecutionFlowInterpreter, IEve
 			if(! internalEventQueue.empty) event = internalEventQueue.poll
 			traceInterpreter.evaluate(endRunCycleTrace, executionContext)
 		} while (event !== null)
+		}finally{
+			if(cycleAdapter !== null)
+				executionContext.eAdapters.add(cycleAdapter)
+		}
 	}
 
 	def rtcStep() {
+		
 		activeStateIndex = 0
 		if(executionContext.executedElements.size > 0) executionContext.executedElements.clear
 		executionContext.clearOutEvents