public void TestByteCallback() { bool cbCalled = false; // The cabllback function HandleBytePacket cb = delegate(byte[] packet) { var msg = (OscMessage)OscPacket.GetPacket(packet); Assert.AreEqual(2, msg.Arguments.Count); Assert.AreEqual(23, msg.Arguments[0]); Assert.AreEqual("hello world", msg.Arguments[1]); cbCalled = true; }; var l1 = new UDPListener(55555, cb); var sender = new SharpOSC.UDPSender("localhost", 55555); var msg1 = new SharpOSC.OscMessage("/test/address", 23, "hello world"); sender.Send(msg1); // Wait until callback processes its message var start = DateTime.Now; while (cbCalled == false && start.AddSeconds(2) > DateTime.Now) { Thread.Sleep(1); } Assert.IsTrue(cbCalled); l1.Close(); }
public void StartListening() { StopListening(); this.Client = new UdpClient(Port); Task.Run(async() => { var endpoint = new IPEndPoint(IPAddress.Any, Port); try { //TODO: this is an initial version, i feel like this can be done more elegant? (atleast async, not thread blocking like now) while (true) { try { var result = await Client.ReceiveAsync(); var bytes = result.Buffer; var message = OscPacket.GetPacket(bytes) as OscMessage; var musePacket = ParsePacket(message); if (musePacket.Address == SignalAddress.Unknown) { Console.WriteLine($"unknown packet with address '{message.Address}', skipping it..."); continue; } PacketReceived?.Invoke(this, musePacket); } catch (ObjectDisposedException) { Console.WriteLine("disposed early"); throw; } catch (Exception ex) { Console.WriteLine($"Corrupt packet received: '{ex.Message}'"); } } } catch (ObjectDisposedException) { //is fine, atm this is the escape condition when the listener needs to stop listening to the port. far from elegant but it works i suppose :) Console.WriteLine("exited"); } catch (SocketException e) { Console.WriteLine(e); } catch (Exception ex) { Console.WriteLine("something else threw an exception... " + ex.Message); } finally { this.Client?.Dispose(); this.Client = null; } }); }
public void TestLong() { long num = 123456789012345; var msg = new OscMessage("/test/1", num); var bytes = msg.GetBytes(); var msg2 = (OscMessage)OscPacket.GetPacket(bytes); Assert.AreEqual(num, msg2.Arguments[0]); }
public void TestNoAddress() { var msg = new OscMessage("", 9999, 24.24f); var bytes = msg.GetBytes(); var msg2 = (OscMessage)OscPacket.GetPacket(bytes); Assert.AreEqual("", msg2.Address); Assert.AreEqual(9999, msg2.Arguments[0]); Assert.AreEqual(24.24f, msg2.Arguments[1]); }
public void TestDouble() { double val = 1234567.2324521e36; var msg = new OscMessage("/test/1", val); var bytes = msg.GetBytes(); var msg2 = (OscMessage)OscPacket.GetPacket(bytes); Assert.AreEqual(val, ((double)msg2.Arguments[0])); }
public void TestTimetag() { var val = DateTime.Now; var tag = new Timetag(val); var msg = new OscMessage("/test/1", tag); var bytes = msg.GetBytes(); var msg2 = (OscMessage)OscPacket.GetPacket(bytes); Assert.AreEqual(tag.Tag, ((Timetag)msg2.Arguments[0]).Tag); }
public void TestBlob() { var blob = new byte[5] { 23, 65, 255, 12, 6 }; var msg = new OscMessage("/test/1", blob); var bytes = msg.GetBytes(); var msg2 = (OscMessage)OscPacket.GetPacket(bytes); Assert.AreEqual(blob, ((byte[])msg2.Arguments[0])); }
public void TestArray() { var list = new List <object>() { 23, true, "hello world" }; var msg = new OscMessage("/test/1", 9999, list, 24.24f); var bytes = msg.GetBytes(); var msg2 = (OscMessage)OscPacket.GetPacket(bytes); Assert.AreEqual(9999, msg2.Arguments[0]); Assert.AreEqual(list, msg2.Arguments[1]); Assert.AreEqual(list.Count, ((List <object>)(msg2.Arguments[1])).Count); Assert.AreEqual(24.24f, msg2.Arguments[2]); }
private void ProcessOscMessage(byte[] bytes) { try { var msg = OscPacket.GetPacket(bytes) as OscMessage; Console.WriteLine(msg.ToString()); if (msg.Address.StartsWith("/Control/")) { vm.ProcessControlMessage(msg); } } catch (Exception ex) { Console.WriteLine(ex.GetTrace()); } }