1 package uk.ac.vamsas.client.simpleclient;
\r
3 import org.apache.commons.logging.*;
\r
5 import uk.ac.vamsas.client.picking.IMessageHandler;
\r
6 import uk.ac.vamsas.client.picking.IPickManager;
\r
7 import uk.ac.vamsas.client.picking.Message;
\r
8 import uk.ac.vamsas.client.picking.SocketManager;
\r
10 * Blocking message handler
\r
14 public class SimplePickManager implements IPickManager {
\r
15 private Log log = LogFactory.getLog(SimplePickManager.class);
\r
17 SocketManager manager=null;
\r
18 SimplePickManager(SocketManager manager) {
\r
19 this.manager=manager;
\r
20 final SimplePickManager me=this;
\r
22 * add a handler that calls the SimplePickManager message handler
\r
24 manager.registerMessageHandler(new IMessageHandler() {
\r
25 public void handleMessage(Message message) {
\r
26 me.handleMessage(message);
\r
32 * when false, messages are queued in a FIFO until thread can restart.
\r
34 private boolean passThru=true;
\r
36 * internal flag - set to true to sleep until passThru is true before passing on a message
\r
38 private boolean qUEUE=false;
\r
40 * the client apps message handler
\r
42 IMessageHandler pickHandler=null;
\r
43 public void registerMessageHandler(IMessageHandler handler) {
\r
44 pickHandler=handler;
\r
48 public synchronized void sendMessage(Message message) {
\r
49 // throw away messages whilst we block
\r
50 if (passThru && manager!=null)
\r
51 manager.sendMessage(message);
\r
54 * pass message onto the Apps handler, or wait until
\r
55 * passThru is true before passing message on.
\r
58 protected synchronized void handleMessage(Message message) {
\r
60 while (!passThru && manager!=null) {
\r
61 log.debug("Not passing through.");
\r
64 } catch (InterruptedException e) {};
\r
67 if (passThru && manager!=null)
\r
68 pickHandler.handleMessage(message);
\r
72 * @return true if messages are being passed to handlers
\r
74 public boolean isPassThru() {
\r
79 * @param true to pass messages on to handlers, false to hold messages in queue
\r
81 public void setPassThru(boolean passThru) {
\r
82 this.passThru = passThru;
\r
85 * shutdown the pickmanager and remove all references to it
\r
87 public void shutdown() {
\r
89 manager.registerMessageHandler(null);
\r
90 SocketManager dying = manager;
\r