summaryrefslogtreecommitdiffstats
path: root/libraries/oscP5/src/oscP5/OscPacket.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/oscP5/src/oscP5/OscPacket.java')
-rw-r--r--libraries/oscP5/src/oscP5/OscPacket.java143
1 files changed, 143 insertions, 0 deletions
diff --git a/libraries/oscP5/src/oscP5/OscPacket.java b/libraries/oscP5/src/oscP5/OscPacket.java
new file mode 100644
index 0000000..4e9cc59
--- /dev/null
+++ b/libraries/oscP5/src/oscP5/OscPacket.java
@@ -0,0 +1,143 @@
+/**
+ * An OSC (Open Sound Control) library for processing.
+ *
+ * (c) 2004-2012
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307 USA
+ *
+ * @author Andreas Schlegel http://www.sojamo.de
+ * @modified 12/23/2012
+ * @version 0.9.9
+ */
+
+package oscP5;
+
+import java.net.DatagramPacket;
+import java.net.InetAddress;
+import netP5.Bytes;
+import netP5.NetAddress;
+import netP5.TcpPacket;
+import netP5.TcpClient;
+
+/**
+ * @invisible
+ */
+public abstract class OscPacket extends OscPatcher {
+
+ protected static final int MESSAGE = 0;
+
+
+ protected static final int BUNDLE = 1;
+
+
+ protected InetAddress inetAddress;
+
+
+ protected String hostAddress;
+
+
+ protected int _myType;
+
+
+ protected TcpClient _myTcpClient = null;
+
+
+ protected int port;
+
+ /**
+ * @invisible
+ */
+ public OscPacket() {}
+
+
+ protected static OscPacket parse(DatagramPacket theDatagramPacket) {
+ if (evaluatePacket(theDatagramPacket.getData()) == MESSAGE) {
+ return new OscMessage(theDatagramPacket);
+ } else {
+ return new OscBundle(theDatagramPacket);
+ }
+ }
+
+
+ protected static OscPacket parse(TcpPacket theTcpPacket) {
+ if (evaluatePacket(theTcpPacket.getData()) == MESSAGE) {
+ return new OscMessage(theTcpPacket);
+ } else {
+ return new OscBundle(theTcpPacket);
+ }
+ }
+
+
+ private static int evaluatePacket(byte[] theBytes) {
+ return (Bytes.areEqual(OscBundle.BUNDLE_AS_BYTES, Bytes.copy(theBytes, 0, OscBundle.BUNDLE_AS_BYTES.length))) ? BUNDLE
+ : MESSAGE;
+ }
+
+
+ /**
+ * when in TCP mode, tcpConnection() returns the instance of the TcpClient that has sent the OscMessage.
+ * @return TcpClient
+ */
+ public TcpClient tcpConnection() {
+ return _myTcpClient;
+ }
+
+
+ protected boolean isValid() {
+ return isValid;
+ }
+
+
+ protected int type() {
+ return _myType;
+ }
+
+
+ public int port() {
+ return port;
+ }
+
+
+ public NetAddress netAddress() {
+ return new NetAddress(inetAddress, port);
+ }
+
+
+ /**
+ * @deprecated
+ * @invisible
+ * @return NetAddress
+ */
+ public NetAddress netaddress() {
+ return new NetAddress(inetAddress, port);
+ }
+
+
+ /**
+ * @return String
+ */
+ public String address() {
+ return hostAddress;
+ }
+
+
+ /**
+ * @return byte[]
+ * @invisible
+ */
+ public abstract byte[] getBytes();
+
+}