1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Added some methods to OSCSender and OSCReceiver to allow them to use existing sockets

This commit is contained in:
jules 2017-12-13 11:08:52 +00:00
parent faa847f443
commit eff880e01f
4 changed files with 67 additions and 16 deletions

View file

@ -331,13 +331,12 @@ struct OSCReceiver::Pimpl : private Thread,
}
//==============================================================================
bool connectToPort (int portNum)
bool connectToPort (int portNumber)
{
if (! disconnect())
return false;
portNumber = portNum;
socket = new DatagramSocket (false);
socket.setOwned (new DatagramSocket (false));
if (! socket->bindToPort (portNumber))
return false;
@ -346,14 +345,27 @@ struct OSCReceiver::Pimpl : private Thread,
return true;
}
bool connectToSocket (DatagramSocket& newSocket)
{
if (! disconnect())
return false;
socket.setNonOwned (&newSocket);
startThread();
return true;
}
bool disconnect()
{
if (socket != nullptr)
{
signalThreadShouldExit();
socket->shutdown();
if (socket.willDeleteObject())
socket->shutdown();
waitForThreadToExit (10000);
socket = nullptr;
socket.reset();
}
return true;
}
@ -567,8 +579,7 @@ private:
Array<std::pair<OSCAddress, OSCReceiver::ListenerWithOSCAddress<OSCReceiver::MessageLoopCallback>*>> listenersWithAddress;
Array<std::pair<OSCAddress, OSCReceiver::ListenerWithOSCAddress<OSCReceiver::RealtimeCallback>*>> realtimeListenersWithAddress;
ScopedPointer<DatagramSocket> socket;
int portNumber = 0;
OptionalScopedPointer<DatagramSocket> socket;
OSCReceiver::FormatErrorHandler formatErrorHandler { nullptr };
enum { oscBufferSize = 4098 };
@ -590,6 +601,11 @@ bool OSCReceiver::connect (int portNumber)
return pimpl->connectToPort (portNumber);
}
bool OSCReceiver::connectToSocket (DatagramSocket& socket)
{
return pimpl->connectToSocket (socket);
}
bool OSCReceiver::disconnect()
{
return pimpl->disconnect();