package com.netthreads.osc.test.task; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.netthreads.network.osc.server.OSCServer; import com.netthreads.network.osc.server.OSCServerImpl; import com.netthreads.network.osc.server.OSCServerListener; import com.netthreads.osc.common.domain.OSCBundle; import com.netthreads.osc.common.domain.OSCMessage; /** * OSC Server task runs server thread. * */ public class OSCServerTask implements Callable<Void>, OSCServerListener { private static final Logger logger = LoggerFactory.getLogger(OSCServerTask.class); private final int port; private final int max; private OSCServer oscServer; private List<OSCBundle> bundles; /** * Construct task. * * @param oscServer * Server instance. */ public OSCServerTask(int port, int max) { this.port = port; this.max = max; bundles = new ArrayList<OSCBundle>(); } /** * Send test messages through OSCClient. * */ @Override public Void call() throws Exception { try { oscServer = new OSCServerImpl(port, this); logger.info("Starting.."); oscServer.listen(); } finally { logger.info("Stopping"); } logger.info("Finished"); return null; } /** * Return server object. * * @return The server object. */ public OSCServer getOscServer() { return oscServer; } @Override public void handleStart() { System.out.print("Starting"); } @Override public void handleShutdown() { System.out.print("Shutdown"); } @Override public void handleOSCMessage(OSCMessage oscMessage) { // TODO Auto-generated method stub } @Override public void handleOSCBundle(OSCBundle oscBundle) { bundles.add(oscBundle); if (bundles.size() >= max) { oscServer.shutdown(); } } public List<OSCBundle> getBundles() { return bundles; } }