1- package org .eclipse .gemoc .execution .sequential .javaengine .headless ;
1+ package org .eclipse .gemoc .execution .sequential .javaengine .headless . mep ;
22
33import java .io .EOFException ;
44import java .io .IOException ;
1111import java .util .concurrent .Semaphore ;
1212
1313import org .eclipse .emf .ecore .resource .Resource ;
14+ import org .eclipse .gemoc .execution .sequential .javaengine .headless .AbstractHeadlessExecutionContext ;
15+ import org .eclipse .gemoc .execution .sequential .javaengine .headless .HeadlessExecutionPlatform ;
16+ import org .eclipse .gemoc .execution .sequential .javaengine .headless .HeadlessExecutionWorkspace ;
17+ import org .eclipse .gemoc .execution .sequential .javaengine .headless .HeadlessPlainK3ExecutionEngine ;
18+ import org .eclipse .gemoc .execution .sequential .javaengine .headless .StackFrame ;
1419import org .eclipse .gemoc .execution .sequential .javaengine .headless .commands .ClearBreakpointsCommand ;
1520import org .eclipse .gemoc .execution .sequential .javaengine .headless .commands .ContinueCommand ;
1621import org .eclipse .gemoc .execution .sequential .javaengine .headless .commands .DoStepCommand ;
2126import org .eclipse .gemoc .execution .sequential .javaengine .headless .commands .StopCommand ;
2227import org .eclipse .gemoc .execution .sequential .javaengine .headless .commands .StopCondition ;
2328import org .eclipse .gemoc .execution .sequential .javaengine .headless .commands .StopEvent ;
29+ import org .eclipse .gemoc .execution .sequential .javaengine .headless .commands .StopReason ;
2430import org .eclipse .gemoc .execution .sequential .javaengine .headless .commands .ToggleBreakpointCommand ;
2531import org .eclipse .gemoc .executionframework .engine .commons .EngineContextException ;
32+ import org .eclipse .gemoc .executionframework .engine .commons .sequential .HeadlessJavaEngineSequentialRunConfiguration ;
2633import org .eclipse .gemoc .executionframework .engine .commons .sequential .ISequentialRunConfiguration ;
2734import org .eclipse .gemoc .executionframework .mep .engine .IMEPEngine ;
2835import org .eclipse .gemoc .executionframework .mep .engine .IMEPEventListener ;
@@ -102,11 +109,14 @@ public void run() {
102109 readData = gemocServerOutput .readObject ();
103110 if (readData instanceof OutputEvent ) {
104111 for (IMEPEventListener eventListener : mepEventListeners ) {
105- eventListener .outputReceived (new org .eclipse .gemoc .executionframework .mep .events .Output (currentEngine , ((OutputEvent ) readData ).output ));
112+ eventListener .outputReceived (new org .eclipse .gemoc .executionframework .mep .events .Output (currentEngine ,
113+ ((OutputEvent ) readData ).output ));
106114 }
107115 } else if (readData instanceof StopEvent ) {
108116 for (IMEPEventListener eventListener : mepEventListeners ) {
109- eventListener .stopReceived (new org .eclipse .gemoc .executionframework .mep .events .Stopped (currentEngine , ((StopEvent ) readData ).stopReason ));
117+
118+ eventListener .stopReceived (new org .eclipse .gemoc .executionframework .mep .events .Stopped (currentEngine ,
119+ engineToMepStopReason (((StopEvent ) readData ).stopReason )));
110120 }
111121 } else {
112122 serverOutputBuffer .add (readData );
@@ -140,6 +150,22 @@ public void initializeResourceModel() {
140150 };
141151 }
142152
153+ private StoppedReason engineToMepStopReason (StopReason engineStopReason ) {
154+ StoppedReason mepStoppedReason = null ;
155+ switch (engineStopReason ) {
156+ case REACHED_BREAKPOINT :
157+ mepStoppedReason = StoppedReason .REACHED_BREAKPOINT ;
158+ break ;
159+ case REACHED_NEXT_LOGICAL_STEP :
160+ mepStoppedReason = StoppedReason .REACHED_NEXT_LOGICAL_STEP ;
161+ break ;
162+ case REACHED_SIMULATION_END :
163+ mepStoppedReason = StoppedReason .REACHED_SIMULATION_END ;
164+ break ;
165+ }
166+ return mepStoppedReason ;
167+ }
168+
143169 @ Override
144170 public StoppedReason internalNext () {
145171 return internalDoStep (StepKind .NEXT );
@@ -162,7 +188,7 @@ private StoppedReason internalDoStep(StepKind stepKind) {
162188 gemocServerInput .writeObject (command );
163189 serverOutputBufferSem .acquire ();
164190 Object output = serverOutputBuffer .remove (0 );
165- return (((StopCondition ) output ).stopReason );
191+ return engineToMepStopReason (((( StopCondition ) output ).stopReason ) );
166192 } catch (IOException | InterruptedException e ) {
167193 e .printStackTrace ();
168194 return null ;
@@ -193,6 +219,7 @@ public void internalTerminate() {
193219 gemocServerInput .writeObject (stopCommand );
194220 serverOutputBufferSem .acquire ();
195221 serverOutputBuffer .remove (0 );
222+ gemocServer .close ();
196223 } catch (IOException | InterruptedException e ) {
197224 e .printStackTrace ();
198225 }
0 commit comments