View Javadoc

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   * Created by staniscia on 24/01/14.
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 }