Files
qController/qController.Standard/Classes/Communication/QReceiver.cs
T

61 lines
1.6 KiB
C#

//this class is 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;
public QReceiver(int port)
{
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);
}
public void ListenLoop()
{
/*while (true)
{
OscMessage messageReceived = null;
while(messageReceived == null)
{
messageReceived = (OscMessage)udpListener.Receive();
Thread.Sleep(1);
}
OnUpdateMessageReceived(messageReceived);
}*/
}
public void Close(){
udpListener.Close();
}
protected virtual void OnUpdateMessageReceived(OscMessage msg)
{
if (UpdateMessageReceived != null)
UpdateMessageReceived(this, new MessageEventArgs() { Message = msg });
}
}
}