1 package cz.cuni.amis.pogamut.udk.communication.translator;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.google.inject.ImplementedBy;
7
8 import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldChangeEvent;
9
10
11
12
13
14 @ImplementedBy(value=IWorldEventQueue.Queue.class)
15 public interface IWorldEventQueue {
16
17
18
19
20
21 public void pushEvent(IWorldChangeEvent event);
22
23
24
25
26
27 public void pushEvent(IWorldChangeEvent[] events);
28
29
30
31
32
33
34
35 public IWorldChangeEvent[] popEvents();
36
37 public static class Queue implements IWorldEventQueue {
38
39 private List<IWorldChangeEvent> events = new ArrayList<IWorldChangeEvent>(50);
40
41 @Override
42 public IWorldChangeEvent[] popEvents() {
43 IWorldChangeEvent[] newEvents = this.events.toArray(new IWorldChangeEvent[events.size()]);
44 this.events.clear();
45 return newEvents;
46 }
47
48 @Override
49 public void pushEvent(IWorldChangeEvent event) {
50 events.add(event);
51 }
52
53 @Override
54 public void pushEvent(IWorldChangeEvent[] events) {
55 for (IWorldChangeEvent event : events) this.events.add(event);
56 }
57
58 }
59
60 }