git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4360 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.9.8
| @@ -154,7 +154,7 @@ namespace Jack | |||
| bool JackNetMasterInterface::Init() | |||
| { | |||
| jack_log ( "JackNetMasterInterface::Init, ID %u.", fParams.fID ); | |||
| jack_log ( "JackNetMasterInterface::Init, ID %u", fParams.fID ); | |||
| session_params_t host_params; | |||
| uint attempt = 0; | |||
| @@ -186,12 +186,12 @@ namespace Jack | |||
| SessionParamsHToN(&fParams, &net_params); | |||
| if ( fSocket.Send ( &net_params, sizeof ( session_params_t ), 0 ) == SOCKET_ERROR ) | |||
| jack_error ( "Error in send : ", StrError ( NET_ERROR_CODE ) ); | |||
| jack_error("Error in send : %s", StrError(NET_ERROR_CODE)); | |||
| memset(&net_params, 0, sizeof (session_params_t)); | |||
| if (((rx_bytes = fSocket.Recv(&net_params, sizeof(session_params_t), 0)) == SOCKET_ERROR) && (fSocket.GetError() != NET_NO_DATA)) | |||
| { | |||
| jack_error ( "Problem with network." ); | |||
| jack_error ( "Problem with network" ); | |||
| return false; | |||
| } | |||
| @@ -199,7 +199,7 @@ namespace Jack | |||
| } | |||
| while ( ( GetPacketType ( &host_params ) != START_MASTER ) && ( ++attempt < SLAVE_SETUP_RETRY ) ); | |||
| if ( attempt == SLAVE_SETUP_RETRY ) { | |||
| jack_error ( "Slave doesn't respond, exiting." ); | |||
| jack_error ( "Slave doesn't respond, exiting" ); | |||
| return false; | |||
| } | |||
| @@ -315,24 +315,24 @@ namespace Jack | |||
| void JackNetMasterInterface::Exit() | |||
| { | |||
| jack_log ( "JackNetMasterInterface::Exit, ID %u", fParams.fID ); | |||
| jack_log("JackNetMasterInterface::Exit, ID %u", fParams.fID); | |||
| //stop process | |||
| fRunning = false; | |||
| //send a 'multicast euthanasia request' - new socket is required on macosx | |||
| jack_info ( "Exiting '%s'", fParams.fName ); | |||
| SetPacketType ( &fParams, KILL_MASTER ); | |||
| JackNetSocket mcast_socket ( fMulticastIP, fSocket.GetPort() ); | |||
| jack_info("Exiting '%s'", fParams.fName); | |||
| SetPacketType(&fParams, KILL_MASTER); | |||
| JackNetSocket mcast_socket(fMulticastIP, fSocket.GetPort()); | |||
| session_params_t net_params; | |||
| memset(&net_params, 0, sizeof ( session_params_t )); | |||
| memset(&net_params, 0, sizeof(session_params_t)); | |||
| SessionParamsHToN(&fParams, &net_params); | |||
| if ( mcast_socket.NewSocket() == SOCKET_ERROR ) | |||
| jack_error ( "Can't create socket : %s", StrError ( NET_ERROR_CODE ) ); | |||
| if ( mcast_socket.SendTo ( &net_params, sizeof ( session_params_t ), 0, fMulticastIP ) == SOCKET_ERROR ) | |||
| jack_error ( "Can't send suicide request : %s", StrError ( NET_ERROR_CODE ) ); | |||
| if (mcast_socket.NewSocket() == SOCKET_ERROR) | |||
| jack_error("Can't create socket : %s", StrError(NET_ERROR_CODE)); | |||
| if (mcast_socket.SendTo(&net_params, sizeof(session_params_t), 0, fMulticastIP) == SOCKET_ERROR) | |||
| jack_error("Can't send suicide request : %s", StrError(NET_ERROR_CODE)); | |||
| mcast_socket.Close(); | |||
| } | |||
| @@ -348,14 +348,14 @@ namespace Jack | |||
| return 0; | |||
| } else if (error == NET_CONN_ERROR) { | |||
| //fatal connection issue, exit | |||
| jack_error ( "'%s' : %s, exiting.", fParams.fName, StrError(NET_ERROR_CODE)); | |||
| jack_error("'%s' : %s, exiting", fParams.fName, StrError(NET_ERROR_CODE)); | |||
| //ask to the manager to properly remove the master | |||
| Exit(); | |||
| // UGLY temporary way to be sure the thread does not call code possibly causing a deadlock in JackEngine. | |||
| ThreadExit(); | |||
| } else { | |||
| jack_error ( "Error in master receive : %s", StrError(NET_ERROR_CODE)); | |||
| jack_error("Error in master receive : %s", StrError(NET_ERROR_CODE)); | |||
| } | |||
| } | |||
| @@ -374,7 +374,7 @@ namespace Jack | |||
| net_error_t error = fSocket.GetError(); | |||
| if (error == NET_CONN_ERROR) { | |||
| //fatal connection issue, exit | |||
| jack_error ("'%s' : %s, exiting.", fParams.fName, StrError (NET_ERROR_CODE)); | |||
| jack_error("'%s' : %s, exiting", fParams.fName, StrError(NET_ERROR_CODE)); | |||
| Exit(); | |||
| // UGLY temporary way to be sure the thread does not call code possibly causing a deadlock in JackEngine. | |||
| @@ -861,7 +861,7 @@ namespace Jack | |||
| jack_error ( "No data, is the master still running ?" ); | |||
| //if a network error occurs, this exception will restart the driver | |||
| } else if ( error == NET_CONN_ERROR ) { | |||
| jack_error ( "Connection lost." ); | |||
| jack_error ( "Recv connection lost" ); | |||
| throw JackNetException(); | |||
| } else { | |||
| jack_error ( "Fatal error in slave receive : %s", StrError ( NET_ERROR_CODE ) ); | |||
| @@ -885,7 +885,7 @@ namespace Jack | |||
| net_error_t error = fSocket.GetError(); | |||
| //if a network error occurs, this exception will restart the driver | |||
| if ( error == NET_CONN_ERROR ) { | |||
| jack_error ( "Connection lost." ); | |||
| jack_error ( "Send connection lost" ); | |||
| throw JackNetException(); | |||
| } else { | |||
| jack_error ( "Fatal error in slave send : %s", StrError ( NET_ERROR_CODE ) ); | |||
| @@ -954,7 +954,7 @@ namespace Jack | |||
| break; | |||
| case 's': //sync | |||
| jack_info ( "NetSlave : overloaded, skipping receive." ); | |||
| jack_info("NetSlave : overloaded, skipping receive"); | |||
| // TODO : finish midi and audio rendering ? | |||
| fNetAudioCaptureBuffer->RenderToJackPorts(); | |||
| return 0; | |||
| @@ -92,7 +92,7 @@ namespace Jack | |||
| JackNetMaster::~JackNetMaster() | |||
| { | |||
| jack_log ( "JackNetMaster::~JackNetMaster, ID %u.", fParams.fID ); | |||
| jack_log ( "JackNetMaster::~JackNetMaster, ID %u", fParams.fID ); | |||
| if ( fJackClient ) | |||
| { | |||
| @@ -113,7 +113,7 @@ namespace Jack | |||
| bool JackNetMaster::Init(bool auto_connect) | |||
| { | |||
| //network init | |||
| if (!JackNetMasterInterface::Init()){ | |||
| if (!JackNetMasterInterface::Init()) { | |||
| jack_error("JackNetMasterInterface::Init() error..." ); | |||
| return false; | |||
| } | |||
| @@ -128,7 +128,7 @@ namespace Jack | |||
| jack_status_t status; | |||
| if ( ( fJackClient = jack_client_open ( fClientName, JackNullOption, &status, NULL ) ) == NULL ) | |||
| { | |||
| jack_error ( "Can't open a new jack client." ); | |||
| jack_error ( "Can't open a new jack client" ); | |||
| return false; | |||
| } | |||
| @@ -140,7 +140,7 @@ namespace Jack | |||
| if ( AllocPorts() != 0 ) | |||
| { | |||
| jack_error ( "Can't allocate jack ports." ); | |||
| jack_error ( "Can't allocate jack ports" ); | |||
| goto fail; | |||
| } | |||
| @@ -150,13 +150,13 @@ namespace Jack | |||
| //finally activate jack client | |||
| if ( jack_activate ( fJackClient ) != 0 ) | |||
| { | |||
| jack_error ( "Can't activate jack client." ); | |||
| jack_error ( "Can't activate jack client" ); | |||
| goto fail; | |||
| } | |||
| if (auto_connect) | |||
| ConnectPorts(); | |||
| jack_info ( "New NetMaster started." ); | |||
| jack_info ( "New NetMaster started" ); | |||
| return true; | |||
| fail: | |||
| @@ -314,17 +314,17 @@ namespace Jack | |||
| case RELEASE_TIMEBASEMASTER : | |||
| timebase = jack_release_timebase ( fJackClient ); | |||
| if ( timebase < 0 ) | |||
| jack_error ( "Can't release timebase master." ); | |||
| jack_error ( "Can't release timebase master" ); | |||
| else | |||
| jack_info ( "'%s' isn't the timebase master anymore.", fParams.fName ); | |||
| jack_info ( "'%s' isn't the timebase master anymore", fParams.fName ); | |||
| break; | |||
| case TIMEBASEMASTER : | |||
| timebase = jack_set_timebase_callback ( fJackClient, 0, SetTimebaseCallback, this ); | |||
| if ( timebase < 0 ) | |||
| jack_error ( "Can't set a new timebase master." ); | |||
| jack_error ( "Can't set a new timebase master" ); | |||
| else | |||
| jack_info ( "'%s' is the new timebase master.", fParams.fName ); | |||
| jack_info ( "'%s' is the new timebase master", fParams.fName ); | |||
| break; | |||
| case CONDITIONAL_TIMEBASEMASTER : | |||
| @@ -332,9 +332,9 @@ namespace Jack | |||
| if ( timebase != EBUSY ) | |||
| { | |||
| if ( timebase < 0 ) | |||
| jack_error ( "Can't set a new timebase master." ); | |||
| jack_error ( "Can't set a new timebase master" ); | |||
| else | |||
| jack_info ( "'%s' is the new timebase master.", fParams.fName ); | |||
| jack_info ( "'%s' is the new timebase master", fParams.fName ); | |||
| } | |||
| break; | |||
| } | |||
| @@ -347,22 +347,22 @@ namespace Jack | |||
| { | |||
| case JackTransportStopped : | |||
| jack_transport_stop ( fJackClient ); | |||
| jack_info ( "'%s' stops transport.", fParams.fName ); | |||
| jack_info ( "'%s' stops transport", fParams.fName ); | |||
| break; | |||
| case JackTransportStarting : | |||
| if ( jack_transport_reposition ( fJackClient, &fReturnTransportData.fPosition ) == EINVAL ) | |||
| jack_error ( "Can't set new position." ); | |||
| jack_error ( "Can't set new position" ); | |||
| jack_transport_start ( fJackClient ); | |||
| jack_info ( "'%s' starts transport frame = %d", fParams.fName, fReturnTransportData.fPosition.frame); | |||
| break; | |||
| case JackTransportNetStarting : | |||
| jack_info ( "'%s' is ready to roll..", fParams.fName ); | |||
| jack_info ( "'%s' is ready to roll...", fParams.fName ); | |||
| break; | |||
| case JackTransportRolling : | |||
| jack_info ( "'%s' is rolling.", fParams.fName ); | |||
| jack_info ( "'%s' is rolling", fParams.fName ); | |||
| break; | |||
| } | |||
| } | |||
| @@ -526,11 +526,11 @@ namespace Jack | |||
| //activate the client (for sync callback) | |||
| if ( jack_activate ( fManagerClient ) != 0 ) | |||
| jack_error ( "Can't activate the network manager client, transport disabled." ); | |||
| jack_error ( "Can't activate the network manager client, transport disabled" ); | |||
| //launch the manager thread | |||
| if ( jack_client_create_thread ( fManagerClient, &fManagerThread, 0, 0, NetManagerThread, this ) ) | |||
| jack_error ( "Can't create the network manager control thread." ); | |||
| jack_error ( "Can't create the network manager control thread" ); | |||
| } | |||
| JackNetMasterManager::~JackNetMasterManager() | |||
| @@ -579,7 +579,7 @@ namespace Jack | |||
| void* JackNetMasterManager::NetManagerThread ( void* arg ) | |||
| { | |||
| JackNetMasterManager* master_manager = static_cast<JackNetMasterManager*> ( arg ); | |||
| jack_info ( "Starting Jack Network Manager." ); | |||
| jack_info ( "Starting Jack Network Manager" ); | |||
| jack_info ( "Listening on '%s:%d'", master_manager->fMulticastIP, master_manager->fSocket.GetPort() ); | |||
| master_manager->Run(); | |||
| return NULL; | |||
| @@ -641,7 +641,7 @@ namespace Jack | |||
| jack_error ( "Error in receive : %s", StrError ( NET_ERROR_CODE ) ); | |||
| if ( ++attempt == 10 ) | |||
| { | |||
| jack_error ( "Can't receive on the socket, exiting net manager." ); | |||
| jack_error ( "Can't receive on the socket, exiting net manager" ); | |||
| return; | |||
| } | |||
| } | |||
| @@ -718,7 +718,7 @@ namespace Jack | |||
| master_list_it_t JackNetMasterManager::FindMaster ( uint32_t id ) | |||
| { | |||
| jack_log ( "JackNetMasterManager::FindMaster, ID %u.", id ); | |||
| jack_log ( "JackNetMasterManager::FindMaster, ID %u", id ); | |||
| master_list_it_t it; | |||
| for ( it = fMasterList.begin(); it != fMasterList.end(); it++ ) | |||
| @@ -729,7 +729,7 @@ namespace Jack | |||
| int JackNetMasterManager::KillMaster ( session_params_t* params ) | |||
| { | |||
| jack_log ( "JackNetMasterManager::KillMaster, ID %u.", params->fID ); | |||
| jack_log ( "JackNetMasterManager::KillMaster, ID %u", params->fID ); | |||
| master_list_it_t master = FindMaster ( params->fID ); | |||
| if ( master != fMasterList.end() ) | |||
| @@ -99,13 +99,13 @@ namespace Jack | |||
| Reset(); | |||
| } | |||
| fSockfd = socket ( AF_INET, SOCK_DGRAM, 0 ); | |||
| /* Enable address reuse */ | |||
| int res, on = 1; | |||
| if ((res = setsockopt( fSockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on))) < 0) { | |||
| StrError(NET_ERROR_CODE); | |||
| } | |||
| return fSockfd; | |||
| } | |||
| @@ -230,12 +230,12 @@ namespace Jack | |||
| { | |||
| int flags; | |||
| fTimeOut = us; | |||
| if ((flags = fcntl(fSockfd, F_GETFL, 0)) < 0) { | |||
| jack_error("JackNetUnixSocket::SetTimeOut error in fcntl F_GETFL"); | |||
| return -1; | |||
| } | |||
| flags |= O_NONBLOCK; | |||
| if (fcntl(fSockfd, F_SETFL, flags) < 0) { | |||
| jack_error("JackNetUnixSocket::SetTimeOut error in fcntl F_SETFL"); | |||
| @@ -252,17 +252,17 @@ namespace Jack | |||
| struct timeval tv; | |||
| fd_set fdset; | |||
| ssize_t res; | |||
| tv.tv_sec = fTimeOut / 1000000; | |||
| tv.tv_usec = fTimeOut % 1000000; | |||
| FD_ZERO(&fdset); | |||
| FD_SET(fSockfd, &fdset); | |||
| do { | |||
| res = select(fSockfd + 1, &fdset, NULL, NULL, &tv); | |||
| } while (res < 0 && errno == EINTR); | |||
| if (res < 0) { | |||
| return res; | |||
| } else if (res == 0) { | |||
| @@ -281,17 +281,17 @@ namespace Jack | |||
| struct timeval tv; | |||
| fd_set fdset; | |||
| ssize_t res; | |||
| tv.tv_sec = fTimeOut / 1000000; | |||
| tv.tv_usec = fTimeOut % 1000000; | |||
| tv.tv_usec = fTimeOut % 1000000; | |||
| FD_ZERO(&fdset); | |||
| FD_SET(fSockfd, &fdset); | |||
| do { | |||
| res = select(fSockfd + 1, NULL, &fdset, NULL, &tv); | |||
| } while (res < 0 && errno == EINTR); | |||
| if (res < 0) { | |||
| return res; | |||
| } else if (res == 0) { | |||
| @@ -375,7 +375,7 @@ namespace Jack | |||
| #if defined(__sun__) || defined(sun) | |||
| if (WaitRead() < 0) | |||
| return -1; | |||
| #endif | |||
| #endif | |||
| return recvfrom ( fSockfd, buffer, nbytes, flags, reinterpret_cast<socket_address_t*> ( &fRecvAddr ), &addr_len ); | |||
| } | |||
| @@ -384,7 +384,7 @@ namespace Jack | |||
| #if defined(__sun__) || defined(sun) | |||
| if (WaitRead() < 0) | |||
| return -1; | |||
| #endif | |||
| #endif | |||
| return recv ( fSockfd, buffer, nbytes, flags ); | |||
| } | |||
| @@ -394,7 +394,7 @@ namespace Jack | |||
| #if defined(__sun__) || defined(sun) | |||
| if (WaitRead() < 0) | |||
| return -1; | |||
| #endif | |||
| #endif | |||
| return recvfrom ( fSockfd, buffer, nbytes, flags, reinterpret_cast<socket_address_t*> ( &fSendAddr ), &addr_len ); | |||
| } | |||
| @@ -405,7 +405,7 @@ namespace Jack | |||
| case EAGAIN: | |||
| case ETIMEDOUT: | |||
| return NET_NO_DATA; | |||
| case ECONNABORTED: | |||
| case ECONNREFUSED: | |||
| case ECONNRESET: | |||
| @@ -415,9 +415,10 @@ namespace Jack | |||
| case ENETDOWN: | |||
| case ENETUNREACH: | |||
| return NET_CONN_ERROR; | |||
| default: | |||
| return NET_OP_ERROR; | |||
| //return NET_OP_ERROR; | |||
| return NET_CONN_ERROR; | |||
| } | |||
| } | |||
| } | |||