Files
qController/qController.Standard/Classes/Communication/QReceiver.cs
T
2019-07-10 12:24:14 -05:00

68 lines
1.8 KiB
C#

//Class used for receiving workspace update messages
using System;
using SharpOSC;
using System.Net;
using System.Threading;
namespace qController
{
public class QReceiver
{
public delegate void UpdateMessageReceivedHandler(object source, MessageEventArgs args);
public event UpdateMessageReceivedHandler UpdateMessageReceived;
static Thread thread;
static UDPListener udpListener;
static int Port;
public QReceiver(int port)
{
Port = port;
udpListener = new UDPListener(port);
thread = new Thread(new ThreadStart(ListenLoop));
thread.Start();
}
public void ListenLoop()
{
/*
HandleOscPacket callback = delegate (OscPacket packet)
{
var messageReceived = (OscMessage)packet;
if (messageReceived != null)
OnUpdateMessageReceived(messageReceived);
else
Console.WriteLine("Message came back null");
};
udpListener = new UDPListener(Port, callback);
*/
while (true)
{
OscMessage messageReceived = null;
while(messageReceived == null)
{
messageReceived = (OscMessage)udpListener.Receive();
Thread.Sleep(1);
}
OnUpdateMessageReceived(messageReceived);
}
}
public void Close(){
thread.Abort();
udpListener.Close();
}
protected virtual void OnUpdateMessageReceived(OscMessage msg)
{
if (UpdateMessageReceived != null)
UpdateMessageReceived(this, new MessageEventArgs() { Message = msg });
}
}
}