1 package net.staniscia.sbs1.parser;
2
3 import net.staniscia.sbs1.SBS1Observer;
4 import net.staniscia.sbs1.msg.*;
5
6 import java.util.ArrayList;
7 import java.util.Collections;
8 import java.util.List;
9 import java.util.concurrent.ExecutorService;
10 import java.util.concurrent.Executors;
11
12
13
14
15 class SBS1SimpleListenerCaller implements SBS1Observer {
16
17 private List<SBS1Observer> observers;
18 private ExecutorService ex = Executors.newCachedThreadPool();
19
20 public SBS1SimpleListenerCaller() {
21 observers = Collections.synchronizedList(new ArrayList<SBS1Observer>());
22 }
23
24 public void register(SBS1Observer observer) {
25 observers.add(observer);
26 }
27
28 public void unRegister(SBS1Observer observer) {
29 observers.remove(observer);
30 }
31
32 public boolean isActive() {
33 return ex != null;
34 }
35
36 public void doStop() {
37 ex.shutdownNow();
38 ex = null;
39 }
40
41 @Override
42 public void update(final MSG1 message) {
43 for (final SBS1Observer observer : observers) {
44 ex.execute(new Runnable() {
45 @Override
46 public void run() {
47 observer.update(message);
48 }
49 });
50 }
51 }
52
53 @Override
54 public void update(final MSG2 message) {
55 for (final SBS1Observer observer : observers) {
56 ex.execute(new Runnable() {
57 @Override
58 public void run() {
59 observer.update(message);
60 }
61 });
62 }
63 }
64
65 @Override
66 public void update(final MSG3 message) {
67 for (final SBS1Observer observer : observers) {
68 ex.execute(new Runnable() {
69 @Override
70 public void run() {
71 observer.update(message);
72 }
73 });
74 }
75 }
76
77 @Override
78 public void update(final MSG4 message) {
79 for (final SBS1Observer observer : observers) {
80 ex.execute(new Runnable() {
81 @Override
82 public void run() {
83 observer.update(message);
84 }
85 });
86 }
87 }
88
89 @Override
90 public void update(final MSG5 message) {
91 for (final SBS1Observer observer : observers) {
92 ex.execute(new Runnable() {
93 @Override
94 public void run() {
95 observer.update(message);
96 }
97 });
98 }
99 }
100
101 @Override
102 public void update(final MSG6 message) {
103 for (final SBS1Observer observer : observers) {
104 ex.execute(new Runnable() {
105 @Override
106 public void run() {
107 observer.update(message);
108 }
109 });
110 }
111 }
112
113 @Override
114 public void update(final MSG7 message) {
115 for (final SBS1Observer observer : observers) {
116 ex.execute(new Runnable() {
117 @Override
118 public void run() {
119 observer.update(message);
120 }
121 });
122 }
123 }
124
125 @Override
126 public void update(final MSG8 message) {
127 for (final SBS1Observer observer : observers) {
128 ex.execute(new Runnable() {
129 @Override
130 public void run() {
131 observer.update(message);
132 }
133 });
134 }
135 }
136
137 @Override
138 public void update(final ID message) {
139 for (final SBS1Observer observer : observers) {
140 ex.execute(new Runnable() {
141 @Override
142 public void run() {
143 observer.update(message);
144 }
145 });
146 }
147 }
148
149 @Override
150 public void update(final SEL message) {
151 for (final SBS1Observer observer : observers) {
152 ex.execute(new Runnable() {
153 @Override
154 public void run() {
155 observer.update(message);
156 }
157 });
158 }
159 }
160
161 @Override
162 public void update(final AIR message) {
163 for (final SBS1Observer observer : observers) {
164 ex.execute(new Runnable() {
165 @Override
166 public void run() {
167 observer.update(message);
168 }
169 });
170 }
171 }
172
173 @Override
174 public void update(final STA message) {
175 for (final SBS1Observer observer : observers) {
176 ex.execute(new Runnable() {
177 @Override
178 public void run() {
179 observer.update(message);
180 }
181 });
182 }
183 }
184
185 @Override
186 public void update(final CLK message) {
187 for (final SBS1Observer observer : observers) {
188 ex.execute(new Runnable() {
189 @Override
190 public void run() {
191 observer.update(message);
192 }
193 });
194 }
195 }
196 }