--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/front_processing/extern/TUIO_JAVA/src/com/illposed/osc/OSCPortIn.java Fri Mar 09 14:52:11 2012 +0100
@@ -0,0 +1,114 @@
+/**
+ * @author cramakrishnan
+ *
+ * Copyright (C) 2004, C. Ramakrishnan / Illposed Software
+ * All rights reserved.
+ *
+ * See license.txt (or license.rtf) for license information.
+ *
+ *
+ * OSCPortIn is the class that listens for OSC messages.
+ *
+ * To receive OSC, you need to construct the OSCPort with a
+ *
+ * An example based on com.illposed.osc.test.OSCPortTest::testReceiving() :
+
+ receiver = new OSCPort(OSCPort.defaultSCOSCPort());
+ OSCListener listener = new OSCListener() {
+ public void acceptMessage(java.util.Date time, OSCMessage message) {
+ System.out.println("Message received!");
+ }
+ };
+ receiver.addListener("/message/receiving", listener);
+ receiver.startListening();
+
+ * Then, using a program such as SuperCollider or sendOSC, send a message
+ * to this computer, port 57110 (defaultSCOSCPort), with the address /message/receiving
+ */
+
+package com.illposed.osc;
+
+import java.net.*;
+import java.io.IOException;
+import com.illposed.osc.utility.OSCByteArrayToJavaConverter;
+import com.illposed.osc.utility.OSCPacketDispatcher;
+
+public class OSCPortIn extends OSCPort implements Runnable {
+
+ // state for listening
+ protected boolean isListening;
+ protected OSCByteArrayToJavaConverter converter = new OSCByteArrayToJavaConverter();
+ protected OSCPacketDispatcher dispatcher = new OSCPacketDispatcher();
+
+ /**
+ * Create an OSCPort that listens on port
+ * @param port
+ * @throws SocketException
+ */
+ public OSCPortIn(int port) throws SocketException {
+ socket = new DatagramSocket(port);
+ this.port = port;
+ }
+
+ /**
+ * @see java.lang.Runnable#run()
+ */
+ public void run() {
+ //maximum UDP packet size
+ byte[] buffer = new byte[65536];
+ DatagramPacket packet = new DatagramPacket(buffer, 65536);
+ while (isListening) {
+ try {
+ packet.setLength(65536);
+ socket.receive(packet);
+ OSCPacket oscPacket = converter.convert(buffer, packet.getLength());
+ dispatcher.dispatchPacket(oscPacket);
+ } catch (java.net.SocketException e) {
+ if (isListening) e.printStackTrace();
+ } catch (IOException e) {
+ if (isListening) e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * Start listening for incoming OSCPackets
+ */
+ public void startListening() {
+ isListening = true;
+ Thread thread = new Thread(this);
+ thread.start();
+ }
+
+ /**
+ * Stop listening for incoming OSCPackets
+ */
+ public void stopListening() {
+ isListening = false;
+ }
+
+ /**
+ * Am I listening for packets?
+ */
+ public boolean isListening() {
+ return isListening;
+ }
+
+ /**
+ * Register the listener for incoming OSCPackets addressed to an Address
+ * @param anAddress the address to listen for
+ * @param listener the object to invoke when a message comes in
+ */
+ public void addListener(String anAddress, OSCListener listener) {
+ dispatcher.addListener(anAddress, listener);
+ }
+
+ /**
+ * Close the socket and free-up resources. It's recommended that clients call
+ * this when they are done with the port.
+ */
+ public void close() {
+ socket.close();
+ }
+
+}