/// <summary> /// Deserialize the packet. /// </summary> /// <param name="sourceEndPoint">The packet origin.</param> /// <param name="data">The serialized packet.</param> /// <param name="start">The starting index into the serialized data stream.</param> /// <param name="end">The ending index into the serialized data stream.</param> /// <returns>The newly deserialized packet.</returns> public static new OscBundle FromByteArray(IPEndPoint sourceEndPoint, byte[] data, ref int start, int end) { string address = OscPacket.ValueFromByteArray <string>(data, ref start); Assert.IsTrue(address == BundlePrefix); OscTimeTag timeStamp = OscPacket.ValueFromByteArray <OscTimeTag>(data, ref start); OscBundle bundle = new OscBundle(sourceEndPoint, timeStamp); while (start < end) { int length = OscPacket.ValueFromByteArray <int>(data, ref start); int packetEnd = start + length; bundle.Append(OscPacket.FromByteArray(sourceEndPoint, data, ref start, packetEnd)); } return(bundle); }
/// <summary> /// Process the data received event. /// </summary> /// <param name="connection">The <see cref="TcpConnection" /> object associated with this data.</param> /// <param name="sourceEndPoint">The source endpoint.</param> /// <param name="data">The received data.</param> private void DataReceived(TcpConnection connection, IPEndPoint sourceEndPoint, byte[] data) { if (mHandleMessages) { try { OscPacket packet = OscPacket.FromByteArray(sourceEndPoint, data); if (TransportType == TransportType.Tcp) { packet.Client = new OscClient(connection); } OnPacketReceived(packet); if (packet.IsBundle) { OnBundleReceived(packet as OscBundle); } else { if (FilterRegisteredMethods) { if (mRegisteredMethods.Contains(packet.Address)) { OnMessageReceived(packet as OscMessage); } } else { OnMessageReceived(packet as OscMessage); } } } catch (Exception ex) { if (ConsumeParsingExceptions == false) { OnReceiveErrored(ex); } } } }