@@ -169,7 +169,6 @@ NetworkEvents::NetworkEvents()
169169 createZmqContext ();
170170
171171 firstTime = true ;
172- responder = nullptr ;
173172 urlport = 5556 ;
174173 threadRunning = false ;
175174
@@ -213,7 +212,6 @@ bool NetworkEvents::closesocket()
213212 if (threadRunning)
214213 {
215214 lock.enter ();
216- zmq_close (responder);
217215 zmq_ctx_destroy (zmqcontext); // this will cause the thread to exit
218216 zmqcontext = nullptr ;
219217 lock.exit ();
@@ -557,24 +555,24 @@ void NetworkEvents::opensocket()
557555void NetworkEvents::run ()
558556{
559557#ifdef ZEROMQ
560- responder = zmq_socket (zmqcontext, ZMQ_REP);
558+ SocketPtr responder ( zmq_socket (zmqcontext, ZMQ_REP), &closeZmqSocket );
561559 String url= String (" tcp://*:" ) + String (urlport);
562- int rc = zmq_bind (responder, url.toRawUTF8 ());
560+ int rc = zmq_bind (responder. get () , url.toRawUTF8 ());
563561
564562 if (rc != 0 )
565563 {
566- // failed to open socket?
564+ // failed to open or bind socket?
567565 std::cout << " Failed to open socket: " << zmq_strerror (zmq_errno ()) << std::endl;
568566 return ;
569567 }
570568
571569 threadRunning = true ;
572- unsigned char * buffer = new unsigned char [ MAX_MESSAGE_LENGTH] ;
570+ HeapBlock< unsigned char > buffer ( MAX_MESSAGE_LENGTH) ;
573571 int result = -1 ;
574572
575573 while (threadRunning)
576574 {
577- result = zmq_recv (responder, buffer, MAX_MESSAGE_LENGTH - 1 , 0 ); // blocking
575+ result = zmq_recv (responder. get () , buffer, MAX_MESSAGE_LENGTH - 1 , 0 ); // blocking
578576
579577 juce::int64 timestamp_software = timer.getHighResolutionTicks ();
580578
@@ -592,20 +590,17 @@ void NetworkEvents::run()
592590 // handle special messages
593591 String response = handleSpecialMessages (Msg);
594592
595- zmq_send (responder, response.getCharPointer (), response.length (), 0 );
593+ zmq_send (responder. get () , response.getCharPointer (), response.length (), 0 );
596594 }
597595 else
598596 {
599597 String zeroMessageError = " Recieved Zero Message?!?!?" ;
600598 // std::cout << "Received Zero Message!" << std::endl;
601599
602- zmq_send (responder, zeroMessageError.getCharPointer (), zeroMessageError.length (), 0 );
600+ zmq_send (responder. get () , zeroMessageError.getCharPointer (), zeroMessageError.length (), 0 );
603601 }
604602 }
605603
606- zmq_close (responder);
607-
608- delete[] buffer;
609604 threadRunning = false ;
610605
611606 return ;
@@ -656,7 +651,9 @@ void NetworkEvents::loadCustomParametersFromXml()
656651 {
657652 if (mainNode->hasTagName (" NETWORKEVENTS" ))
658653 {
659- setNewListeningPort (mainNode->getIntAttribute (" port" ));
654+ auto ed = static_cast <NetworkEventsEditor*>(getEditor ());
655+ if (!ed) { return ; }
656+ ed->setPortString (mainNode->getStringAttribute (" port" ));
660657 }
661658 }
662659 }
@@ -674,6 +671,14 @@ void NetworkEvents::createZmqContext()
674671}
675672
676673
674+ void NetworkEvents::closeZmqSocket (void * socket)
675+ {
676+ #ifdef ZEROMQ
677+ zmq_close (socket);
678+ #endif
679+ }
680+
681+
677682StringPairArray NetworkEvents::parseNetworkMessage (String msg)
678683{
679684 StringArray splitted;
0 commit comments