View Javadoc

1   package net.sf.josceleton.connection.impl;
2   
3   import java.util.Date;
4   import java.util.HashMap;
5   import java.util.Map;
6   
7   import net.sf.josceleton.connection.impl.osc.OscAddress;
8   import net.sf.josceleton.connection.impl.osc.OscPort;
9   
10  import com.illposed.osc.OSCListener;
11  import com.illposed.osc.OSCMessage;
12  
13  class OscMessageAddressRouterImpl implements OscMessageAddressRouter {
14  
15  	/** {@inheritDoc} from {@link OscMessageAddressRouter} */
16  	@Override public final void reroute(final OscPort oscPort, final OscMessageAddressRouterCallback callback) {
17  		final Map<OscAddress, OSCListener> map = this.createListenerMap(callback);
18  		
19  		for(final OscAddress address : OscAddress.values()) {
20  			oscPort.addListenerFor(address, map.get(address));
21  		}
22  	}
23  
24  	private Map<OscAddress, OSCListener> createListenerMap(final OscMessageAddressRouterCallback callback) {
25  		final Map<OscAddress, OSCListener> map = new HashMap<OscAddress, OSCListener>();
26  		
27  		map.put(OscAddress.JOINT, new OSCListener() {
28  			@Override public void acceptMessage(final Date date, final OSCMessage oscMessage) {
29  				callback.onAcceptedJointMessage(date, oscMessage);
30  		}});
31  		final OSCListener userListener = new OSCListener() {
32  			@Override public void acceptMessage(final Date date, final OSCMessage oscMessage) {
33  				callback.onAcceptedUserMessage(date, oscMessage);
34  		}};
35  		map.put(OscAddress.NEW_USER, userListener);
36  		map.put(OscAddress.NEW_SKEL, userListener);
37  		map.put(OscAddress.LOST_USER, userListener);
38  		
39  		// assert(for each OscAddress.enum => map.value exists)
40  		
41  		return map;
42  	}
43  }