View Javadoc

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  }