1 package org.indi.client;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.ByteArrayOutputStream;
5 import java.io.ObjectInputStream;
6 import java.io.ObjectOutputStream;
7 import java.util.HashSet;
8 import java.util.Queue;
9 import java.util.Set;
10
11 import org.indi.objects.Vector;
12 import org.indi.reactor.BasicQueueHandler;
13
14 public class Dispatcher extends BasicQueueHandler {
15 Set<Vector> vectors;
16
17 public Dispatcher(Queue<Object> queue) {
18 super(queue);
19 this.vectors = new HashSet<Vector>();
20 }
21
22 private static Object deepCopy(Object o) {
23 try {
24 ByteArrayOutputStream baos = new ByteArrayOutputStream();
25 new ObjectOutputStream(baos).writeObject(o);
26 ByteArrayInputStream bais = new ByteArrayInputStream(baos
27 .toByteArray());
28 return new ObjectInputStream(bais).readObject();
29 } catch (Exception e) {
30 e.printStackTrace();
31 return null;
32 }
33 }
34
35 @Override
36 public void onRead(Object o) {
37 if (o instanceof Vector) {
38 Vector v = (Vector) o;
39 if (this.vectors.contains(v)) {
40 this.vectors.remove(v);
41 this.vectors.add(v);
42 } else {
43 this.vectors.add(v);
44 onNewVector(v);
45 }
46 }
47 }
48
49 public void onNewVector(Vector v) {
50 System.out.println("onNew " + v.getDevice() + ":" + v.getName());
51 };
52 }