Files
qController/qController.Standard/Classes/Communication/QReceiver.cs
T
jwetzell fe8bd257d1 Switch to only TCP Communication
- No more UDP
- Lots of random refactoring as well
2020-06-06 12:12:23 -05:00

65 lines
1.8 KiB
C#

//Class used for receiving workspace update messages (UDP)
using SharpOSC;
using System.Threading;
using Serilog;
namespace qController.Communication
{
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
Log.Debug("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 });
}
}
}