aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/cycling74/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/cycling74/net')
-rw-r--r--src/java/com/cycling74/net/TcpReceiver.java89
-rw-r--r--src/java/com/cycling74/net/TcpSender.java103
-rw-r--r--src/java/com/cycling74/net/UdpReceiver.java84
-rw-r--r--src/java/com/cycling74/net/UdpSender.java84
4 files changed, 360 insertions, 0 deletions
diff --git a/src/java/com/cycling74/net/TcpReceiver.java b/src/java/com/cycling74/net/TcpReceiver.java
new file mode 100644
index 0000000..f449517
--- /dev/null
+++ b/src/java/com/cycling74/net/TcpReceiver.java
@@ -0,0 +1,89 @@
+package com.cycling74.net;
+
+import java.lang.reflect.Method;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+
+import com.cycling74.max.Atom;
+import com.cycling74.max.MaxRuntimeException;
+import com.cycling74.max.MaxSystem;
+
+/**
+ * This portion of code is scheduled for pdj-0.8.5
+ * IT IS NOT FUNCTIONAL
+ */
+public class TcpReceiver implements Runnable {
+ DatagramSocket receiver;
+ DatagramPacket packet;
+
+ Method callback = null;
+ Object instance;
+
+ String debugString = null;
+ int port;
+ boolean runnable = true;
+
+ public void close() {
+ if ( receiver == null )
+ return;
+ runnable = false;
+ receiver.close();
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setActive(boolean active) {
+ if ( active == false ) {
+ runnable = true;
+ new Thread(this).start();
+ } else {
+ close();
+ }
+
+ }
+
+ public void setCallback(Object caller, String methodName) {
+ try {
+ callback = caller.getClass().getDeclaredMethod(methodName, new Class[] { Atom.class });
+ instance = caller;
+ } catch (Exception e) {
+ throw new MaxRuntimeException(e);
+ }
+ }
+
+ public void setPort(int port) {
+ setActive(false);
+ this.port = port;
+ }
+
+ public void setDebugString(String debugString) {
+ this.debugString = debugString;
+ }
+
+ public void run() {
+ DatagramPacket packet = new DatagramPacket(new byte[4096], 4096);
+ Object callerArgs[] = new Object[1];
+
+ try {
+ while(runnable) {
+ receiver.receive(packet);
+ String msg = new String(packet.getData(), 0, packet.getLength());
+ if ( debugString != null )
+ MaxSystem.post(debugString + " " + msg);
+ callerArgs[0] = Atom.parse(msg);
+ try {
+ callback.invoke(instance, callerArgs);
+ } catch( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+ } catch (Exception e) {
+ if ( runnable != false) {
+ runnable = false;
+ throw new MaxRuntimeException(e);
+ }
+ }
+ }
+}
diff --git a/src/java/com/cycling74/net/TcpSender.java b/src/java/com/cycling74/net/TcpSender.java
new file mode 100644
index 0000000..2ba0f67
--- /dev/null
+++ b/src/java/com/cycling74/net/TcpSender.java
@@ -0,0 +1,103 @@
+package com.cycling74.net;
+
+import java.io.IOException;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetSocketAddress;
+
+import com.cycling74.max.Atom;
+import com.cycling74.max.MaxRuntimeException;
+
+/**
+ * This portion of code is scheduled for pdj-0.8.5
+ * IT IS NOT FUNCTIONAL
+ */
+public class TcpSender {
+ DatagramSocket sender;
+ DatagramPacket packet;
+ String address = null;
+ int port = -1;
+
+ public TcpSender() {
+ }
+
+ public TcpSender(String address, int port) {
+ this.address= address;
+ this.port = port;
+ }
+
+ public void send(Atom args[]) {
+ if ( sender == null )
+ initsocket();
+
+ byte buff[] = Atom.toOneString(args).getBytes();
+ packet.setData(buff, 0, buff.length);
+ try {
+ sender.send(packet);
+ } catch (IOException e) {
+ throw new MaxRuntimeException(e);
+ }
+ }
+
+ public void send(int i) {
+ if ( sender == null )
+ initsocket();
+
+ byte buff[] = Integer.toString(i).getBytes();
+ packet.setData(buff, 0, buff.length);
+ try {
+ sender.send(packet);
+ } catch (IOException e) {
+ throw new MaxRuntimeException(e);
+ }
+ }
+
+ public void send(float f) {
+ if ( sender == null )
+ initsocket();
+
+ byte buff[] = Float.toString(f).getBytes();
+ packet.setData(buff, 0, buff.length);
+ try {
+ sender.send(packet);
+ } catch (IOException e) {
+ throw new MaxRuntimeException(e);
+ }
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ if ( sender != null ) {
+ sender = null;
+ sender.close();
+ }
+ this.address = address;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ if ( sender != null ) {
+ sender = null;
+ sender.close();
+ }
+ this.port = port;
+ }
+
+ private synchronized void initsocket() {
+ if ( sender != null )
+ return;
+ try {
+ sender = new DatagramSocket();
+ sender.connect(new InetSocketAddress(address, port));
+ packet = new DatagramPacket(new byte[0], 0);
+ } catch (Exception e) {
+ throw new MaxRuntimeException(e);
+ }
+ }
+}
diff --git a/src/java/com/cycling74/net/UdpReceiver.java b/src/java/com/cycling74/net/UdpReceiver.java
new file mode 100644
index 0000000..fd47e25
--- /dev/null
+++ b/src/java/com/cycling74/net/UdpReceiver.java
@@ -0,0 +1,84 @@
+package com.cycling74.net;
+
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+
+import com.cycling74.max.Atom;
+import com.cycling74.max.MaxRuntimeException;
+import com.cycling74.max.MaxSystem;
+import com.cycling74.max.Callback;
+
+/**
+ * This portion of code is scheduled for pdj-0.8.5
+ * IT IS NOT FUNCTIONAL
+ */
+public class UdpReceiver implements Runnable {
+ DatagramSocket receiver;
+ DatagramPacket packet;
+
+ Callback callback;
+
+ String debugString = null;
+ int port;
+ boolean runnable = true;
+
+ public void close() {
+ if ( receiver == null )
+ return;
+ runnable = false;
+ receiver.close();
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setActive(boolean active) {
+ if ( active == false ) {
+ runnable = true;
+ new Thread(this).start();
+ } else {
+ close();
+ }
+
+ }
+
+ public void setCallback(Object caller, String methodName) {
+ callback = new Callback(caller, methodName);
+ }
+
+ public void setPort(int port) {
+ setActive(false);
+ this.port = port;
+ }
+
+ public void setDebugString(String debugString) {
+ this.debugString = debugString;
+ }
+
+ public void run() {
+ DatagramPacket packet = new DatagramPacket(new byte[4096], 4096);
+ Object callerArgs[] = new Object[1];
+
+ try {
+ while(runnable) {
+ receiver.receive(packet);
+ String msg = new String(packet.getData(), 0, packet.getLength());
+ if ( debugString != null )
+ MaxSystem.post(debugString + " " + msg);
+ callerArgs[0] = Atom.parse(msg);
+
+ /* try {
+ callback.invoke(instance, callerArgs);
+ } catch( Exception e ) {
+ e.printStackTrace();
+ } */
+ }
+ } catch (Exception e) {
+ if ( runnable != false) {
+ runnable = false;
+ throw new MaxRuntimeException(e);
+ }
+ }
+ }
+}
diff --git a/src/java/com/cycling74/net/UdpSender.java b/src/java/com/cycling74/net/UdpSender.java
new file mode 100644
index 0000000..6ef7e34
--- /dev/null
+++ b/src/java/com/cycling74/net/UdpSender.java
@@ -0,0 +1,84 @@
+package com.cycling74.net;
+
+import java.io.IOException;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+
+import com.cycling74.max.Atom;
+import com.cycling74.max.MaxRuntimeException;
+
+/**
+ * This portion of code is scheduled for pdj-0.8.5
+ * IT IS NOT FUNCTIONAL
+ */
+public class UdpSender {
+ InetAddress inetAddress;
+ DatagramSocket sender;
+ boolean init;
+
+ String address = null;
+ int port = -1;
+
+ public UdpSender() {
+ }
+
+ public UdpSender(String address, int port) {
+ this.address = address;
+ this.port = port;
+ initsocket();
+ }
+
+ public void send(Atom args[]) {
+ send(Atom.toOneString(args).getBytes());
+ }
+
+ public void send(int i) {
+ send(Integer.toString(i).getBytes());
+ }
+
+ public void send(float f) {
+ send(Float.toString(f).getBytes());
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ initsocket();
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ initsocket();
+ }
+
+ synchronized void initsocket() {
+ try {
+ sender = null;
+ inetAddress = InetAddress.getByName(address);
+ sender = new DatagramSocket();
+ } catch (Exception e) {
+ throw new MaxRuntimeException(e);
+ }
+ }
+
+ void send(byte buff[]) {
+ if ( sender == null )
+ throw new MaxRuntimeException("UdpSender is not initialized");
+
+ try {
+ DatagramPacket packet = new DatagramPacket(buff, buff.length, inetAddress, port);
+ sender.send(packet);
+ } catch (IOException e) {
+ throw new MaxRuntimeException(e);
+ }
+
+ }
+}