front_processing/extern/TUIO_JAVA/src/com/illposed/osc/utility/OSCPacketDispatcher.java
changeset 9 0f44b7360c8d
parent 0 6fefd4afe506
child 10 925b7ee746e3
equal deleted inserted replaced
8:e4e7db2435f8 9:0f44b7360c8d
     1 /* $Id: OSCPacketDispatcher.java,v 1.2 2008/07/01 15:29:46 modin Exp $
     1 /* $Id: OSCPacketDispatcher.java,v 1.2 2008/07/01 15:29:46 modin Exp $
     2  * Created on 28.10.2003
     2  * Created on 28.10.2003
     3  */
     3  */
     4 package com.illposed.osc.utility;
     4 package com.illposed.osc.utility;
     5 
     5 
     6 import com.illposed.osc.*;
     6 import com.illposed.osc.*;
    20  * Dispatches OSCMessages to registered listeners.
    20  * Dispatches OSCMessages to registered listeners.
    21  * 
    21  * 
    22  */
    22  */
    23 
    23 
    24 public class OSCPacketDispatcher {
    24 public class OSCPacketDispatcher {
    25 	private Hashtable<String,OSCListener> addressToClassTable = new Hashtable<String,OSCListener>();
    25     private Hashtable<String,OSCListener> addressToClassTable = new Hashtable<String,OSCListener>();
    26 	
    26     
    27 	/**
    27     /**
    28 	 * 
    28      * 
    29 	 */
    29      */
    30 	public OSCPacketDispatcher() {
    30     public OSCPacketDispatcher() {
    31 		super();
    31         super();
    32 	}
    32     }
    33 
    33 
    34 	public void addListener(String address, OSCListener listener) {
    34     public void addListener(String address, OSCListener listener) {
    35 		addressToClassTable.put(address, listener);
    35         addressToClassTable.put(address, listener);
    36 	}
    36     }
    37 	
    37     
    38 	public void dispatchPacket(OSCPacket packet) {
    38     public void dispatchPacket(OSCPacket packet) {
    39 		if (packet instanceof OSCBundle)
    39         if (packet instanceof OSCBundle)
    40 			dispatchBundle((OSCBundle) packet);
    40             dispatchBundle((OSCBundle) packet);
    41 		else
    41         else
    42 			dispatchMessage((OSCMessage) packet);
    42             dispatchMessage((OSCMessage) packet);
    43 	}
    43     }
    44 	
    44     
    45 	public void dispatchPacket(OSCPacket packet, Date timestamp) {
    45     public void dispatchPacket(OSCPacket packet, Date timestamp) {
    46 		if (packet instanceof OSCBundle)
    46         if (packet instanceof OSCBundle)
    47 			dispatchBundle((OSCBundle) packet);
    47             dispatchBundle((OSCBundle) packet);
    48 		else
    48         else
    49 			dispatchMessage((OSCMessage) packet, timestamp);
    49             dispatchMessage((OSCMessage) packet, timestamp);
    50 	}
    50     }
    51 	
    51     
    52 	private void dispatchBundle(OSCBundle bundle) {
    52     private void dispatchBundle(OSCBundle bundle) {
    53 		Date timestamp = bundle.getTimestamp();
    53         Date timestamp = bundle.getTimestamp();
    54 		OSCPacket[] packets = bundle.getPackets();
    54         OSCPacket[] packets = bundle.getPackets();
    55 		for (int i = 0; i < packets.length; i++) {
    55         for (int i = 0; i < packets.length; i++) {
    56 			dispatchPacket(packets[i], timestamp);
    56             dispatchPacket(packets[i], timestamp);
    57 		}
    57         }
    58 	}
    58     }
    59 	
    59     
    60 	private void dispatchMessage(OSCMessage message) {
    60     private void dispatchMessage(OSCMessage message) {
    61 		dispatchMessage(message, null);
    61         dispatchMessage(message, null);
    62 	}
    62     }
    63 	
    63     
    64 	private void dispatchMessage(OSCMessage message, Date time) {
    64     private void dispatchMessage(OSCMessage message, Date time) {
    65 		Enumeration keys = addressToClassTable.keys();
    65         Enumeration keys = addressToClassTable.keys();
    66 		while (keys.hasMoreElements()) {
    66         while (keys.hasMoreElements()) {
    67 			String key = (String) keys.nextElement();
    67             String key = (String) keys.nextElement();
    68 			// this supports the OSC regexp facility, but it
    68             // this supports the OSC regexp facility, but it
    69 			// only works in JDK 1.4, so don't support it right now
    69             // only works in JDK 1.4, so don't support it right now
    70 			// if (key.matches(message.getAddress())) {
    70             // if (key.matches(message.getAddress())) {
    71 			if (key.equals(message.getAddress())) {
    71             if (key.equals(message.getAddress())) {
    72 				OSCListener listener = (OSCListener) addressToClassTable.get(key);
    72                 OSCListener listener = (OSCListener) addressToClassTable.get(key);
    73 				listener.acceptMessage(time, message);
    73                 listener.acceptMessage(time, message);
    74 			}
    74             }
    75 		}
    75         }
    76 	}
    76     }
    77 }
    77 }