/// <summary>
/// Read Thread. Loops waiting for packets. When a packet is received, it is
/// dispatched to any waiting All Message Handler. Also, the address is looked up and
/// any matching handler is called.
/// </summary>
private void Read()
{
while (ReaderRunning)
{
Debug.Log("Read");
byte[] buffer = new byte[1000];
int length = OscPacketIO.ReceivePacket(buffer);
if (length > 0)
{
ArrayList messages = Osc.PacketToOscMessages(buffer, length);
foreach (OscMessage om in messages)
{
if (AllMessageHandler != null)
{
AllMessageHandler(om);
}
OscMessageHandler h = (OscMessageHandler)Hashtable.Synchronized(AddressTable)[om.Address];
if (h != null)
{
h(om);
}
}
}
else
{
Thread.Sleep(500);
}
}
}