1
2
3
4
5
6 package cz.cuni.amis.pogamut.ut2004.communication.translator.server.state;
7
8 import cz.cuni.amis.fsm.FSMState;
9 import cz.cuni.amis.fsm.FSMTransition;
10 import cz.cuni.amis.fsm.IFSMState;
11 import cz.cuni.amis.pogamut.base.communication.messages.InfoMessage;
12 import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldChangeEvent;
13 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MapList;
14 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MapListEnd;
15 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MapListStart;
16 import cz.cuni.amis.pogamut.ut2004.communication.translator.TranslatorContext;
17 import cz.cuni.amis.pogamut.ut2004.communication.translator.server.support.ServerListState;
18 import cz.cuni.amis.pogamut.ut2004.communication.translator.shared.events.MapListObtained;
19
20
21
22
23
24 @FSMState(map={@FSMTransition(
25 state=ServerRunningState.class,
26 symbol={MapListEnd.class},
27 transition={})}
28 )
29 public class MapListState extends ServerListState<MapList, TranslatorContext> {
30
31 public MapListState() {
32 super(MapListStart.class, MapList.class, MapListEnd.class);
33 }
34
35 @Override
36 public void stateLeaving(TranslatorContext context,
37 IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {
38 super.stateLeaving(context, toState, symbol);
39 long simTime =
40 (symbol instanceof IWorldChangeEvent ? ((IWorldChangeEvent)symbol).getSimTime() : 0);
41 context.getEventQueue().pushEvent(new MapListObtained(getList(), simTime));
42 newList();
43 }
44
45 @Override
46 protected void innerStateSymbol(TranslatorContext context,
47 InfoMessage symbol) {
48 super.innerStateSymbol(context, symbol);
49 if (symbol instanceof MapList) {
50 context.getEventQueue().pushEvent((MapList)symbol);
51 }
52 }
53
54 }
55