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 }