/** * Create an OSCPort that listens using a specified socket. * @param socket DatagramSocket to listen on. */ public OSCPortIn(final DatagramSocket socket) { super(socket, socket.getLocalPort()); this.converter = new OSCByteArrayToJavaConverter(); this.dispatcher = new OSCPacketDispatcher(); this.listeningThread = null; }
public boolean receive(final byte[] data, int length) { OSCByteArrayToJavaConverter c = new OSCByteArrayToJavaConverter(); OSCPacket p = c.convert(data, length); return receive(p); }
public boolean receive(final byte[] data, int length) { OSCByteArrayToJavaConverter c = new OSCByteArrayToJavaConverter(); OSCPacket p = c.convert(data, length); return receive(p); }
/** * Converts the byte array to a bundle. * Assumes that the byte array is a bundle. * @return a bundle containing the data specified in the byte stream */ private OSCBundle convertBundle(final Input rawInput) { // skip the "#bundle " stuff rawInput.addToStreamPosition(BUNDLE_START.length() + 1); final Date timestamp = readTimeTag(rawInput); final OSCBundle bundle = new OSCBundle(timestamp); final OSCByteArrayToJavaConverter myConverter = new OSCByteArrayToJavaConverter(); myConverter.setCharset(charset); while (rawInput.getStreamPosition() < rawInput.getBytesLength()) { // recursively read through the stream and convert packets you find final int packetLength = readInteger(rawInput); if (packetLength == 0) { throw new IllegalArgumentException("Packet length may not be 0"); } else if ((packetLength % 4) != 0) { throw new IllegalArgumentException("Packet length has to be a multiple of 4, is:" + packetLength); } final byte[] packetBytes = new byte[packetLength]; System.arraycopy(rawInput.getBytes(), rawInput.getStreamPosition(), packetBytes, 0, packetLength); rawInput.addToStreamPosition(packetLength); final OSCPacket packet = myConverter.convert(packetBytes, packetLength); bundle.addPacket(packet); } return bundle; }