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:
parent
faa847f443
commit
eff880e01f
4 changed files with 67 additions and 16 deletions
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue