1 package cz.cuni.amis.pogamut.ut2004.agent.module.sensomotoric;
2
3 import java.util.logging.Logger;
4
5 import cz.cuni.amis.pogamut.base.agent.module.SensomotoricModule;
6 import cz.cuni.amis.pogamut.base.communication.worldview.IWorldView;
7 import cz.cuni.amis.pogamut.base.communication.worldview.event.IWorldEventListener;
8 import cz.cuni.amis.pogamut.ut2004.bot.IUT2004BotController;
9 import cz.cuni.amis.pogamut.ut2004.bot.impl.UT2004Bot;
10 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbcommands.Ping;
11 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.Pong;
12 import cz.cuni.amis.utils.flag.Flag;
13
14
15
16
17
18
19
20
21
22
23 public class Requests extends SensomotoricModule<UT2004Bot>
24 {
25
26
27
28
29 public Flag<Long> ping() {
30 act.act(new Ping());
31 return lastPong;
32 }
33
34
35
36
37
38 public Flag<Long> getLastPong() {
39 return lastPong;
40 }
41
42
43
44
45
46
47
48 private class PongListener implements IWorldEventListener<Pong>
49 {
50 @Override
51 public void notify(Pong event)
52 {
53 lastPong.setFlag(System.currentTimeMillis());
54 }
55
56
57
58
59
60 public PongListener(IWorldView worldView)
61 {
62 worldView.addEventListener(Pong.class, this);
63 }
64 }
65
66
67 PongListener pongListener;
68
69 Flag<Long> lastPong = new Flag<Long>((long)-1);
70
71
72
73
74
75
76
77
78 public Requests(UT2004Bot bot)
79 {
80 this(bot, null);
81 }
82
83
84
85
86
87
88 public Requests(UT2004Bot bot, Logger log)
89 {
90 super(bot, log);
91
92
93 pongListener = new PongListener(worldView);
94
95 cleanUp();
96 }
97
98 @Override
99 protected void cleanUp() {
100 lastPong.setFlag((long)-1);
101 }
102
103 }