Browse Source

Fix NetJack2 in scons - Fix synchronous networking

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2498 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.90
moret 17 years ago
parent
commit
9e1a2bb8f6
5 changed files with 27 additions and 21 deletions
  1. +0
    -1
      SConstruct
  2. +4
    -4
      common/JackNetDriver.cpp
  3. +7
    -6
      common/JackNetManager.cpp
  4. +7
    -1
      common/SConscript
  5. +9
    -9
      common/wscript

+ 0
- 1
SConstruct View File

@@ -215,7 +215,6 @@ env['INCLUDEDIR'] = env.subst(env['INCLUDEDIR'])
env['SERVER'] = 'jackd' env['SERVER'] = 'jackd'
env['CLIENTLIB'] = 'jack' env['CLIENTLIB'] = 'jack'
env['SERVERLIB'] = 'jackserver' env['SERVERLIB'] = 'jackserver'
env['NETMANAGERLIB'] = 'netmanager'
env['ADDON_DIR'] = env.subst(env['LIBDIR']) + "/jack" env['ADDON_DIR'] = env.subst(env['LIBDIR']) + "/jack"
env['INSTALL_ADDON_DIR'] = env['DESTDIR'] + env.subst(env['LIBDIR']) + "/jack" env['INSTALL_ADDON_DIR'] = env['DESTDIR'] + env.subst(env['LIBDIR']) + "/jack"




+ 4
- 4
common/JackNetDriver.cpp View File

@@ -192,7 +192,7 @@ namespace Jack
do do
{ {
//send 'available' //send 'available'
if ( sendto ( fSockfd, &fParams, sizeof ( session_params_t ), MSG_DONTWAIT,
if ( sendto ( fSockfd, &fParams, sizeof ( session_params_t ), 0,
reinterpret_cast<socket_address_t*> ( &mcast_addr ), addr_len ) < 0 ) reinterpret_cast<socket_address_t*> ( &mcast_addr ), addr_len ) < 0 )
jack_error ( "Error in data send : %s", strerror ( errno ) ); jack_error ( "Error in data send : %s", strerror ( errno ) );
//filter incoming packets : don't exit while receiving wrong packets //filter incoming packets : don't exit while receiving wrong packets
@@ -228,7 +228,7 @@ namespace Jack
jack_log ( "JackNetDriver::GetNetMasterStartSync()" ); jack_log ( "JackNetDriver::GetNetMasterStartSync()" );
//tell the master to start //tell the master to start
SetPacketType ( &fParams, START_MASTER ); SetPacketType ( &fParams, START_MASTER );
if ( send ( fSockfd, &fParams, sizeof ( session_params_t ), MSG_DONTWAIT ) < 0 )
if ( send ( fSockfd, &fParams, sizeof ( session_params_t ), 0 ) < 0 )
{ {
jack_error ( "Error in send : %s", strerror ( errno ) ); jack_error ( "Error in send : %s", strerror ( errno ) );
return ( ( errno == ECONNABORTED ) || ( errno == ECONNREFUSED ) || ( errno == ECONNRESET ) ) ? NET_ERROR : SEND_ERROR; return ( ( errno == ECONNABORTED ) || ( errno == ECONNREFUSED ) || ( errno == ECONNRESET ) ) ? NET_ERROR : SEND_ERROR;
@@ -551,7 +551,7 @@ namespace Jack
fTxHeader.fIsLastPckt = 'y'; fTxHeader.fIsLastPckt = 'y';
memcpy ( fTxBuffer, &fTxHeader, sizeof ( packet_header_t ) ); memcpy ( fTxBuffer, &fTxHeader, sizeof ( packet_header_t ) );
copy_size = fNetMidiPlaybackBuffer->RenderToNetwork ( subproc, fTxHeader.fMidiDataSize ); copy_size = fNetMidiPlaybackBuffer->RenderToNetwork ( subproc, fTxHeader.fMidiDataSize );
tx_bytes = Send ( sizeof ( packet_header_t ) + copy_size, MSG_DONTWAIT );
tx_bytes = Send ( sizeof ( packet_header_t ) + copy_size, 0 );
} }
} }


@@ -566,7 +566,7 @@ namespace Jack
fTxHeader.fIsLastPckt = 'y'; fTxHeader.fIsLastPckt = 'y';
fNetAudioPlaybackBuffer->RenderFromJackPorts ( subproc ); fNetAudioPlaybackBuffer->RenderFromJackPorts ( subproc );
memcpy ( fTxBuffer, &fTxHeader, sizeof ( packet_header_t ) ); memcpy ( fTxBuffer, &fTxHeader, sizeof ( packet_header_t ) );
tx_bytes = Send ( fAudioTxLen, MSG_DONTWAIT );
tx_bytes = Send ( fAudioTxLen, 0 );
} }
} }
return 0; return 0;


+ 7
- 6
common/JackNetManager.cpp View File

@@ -20,6 +20,7 @@


#include "JackNetManager.h" #include "JackNetManager.h"
#include "JackError.h" #include "JackError.h"
#include "JackExports.h"


#define DEFAULT_MULTICAST_IP "225.3.19.154" #define DEFAULT_MULTICAST_IP "225.3.19.154"
#define DEFAULT_PORT 19000 #define DEFAULT_PORT 19000
@@ -266,7 +267,7 @@ namespace Jack
int mcast_sockfd = socket ( AF_INET, SOCK_DGRAM, 0 ); int mcast_sockfd = socket ( AF_INET, SOCK_DGRAM, 0 );
if ( mcast_sockfd < 0 ) if ( mcast_sockfd < 0 )
jack_error ( "Can't create socket : %s", strerror ( errno ) ); jack_error ( "Can't create socket : %s", strerror ( errno ) );
if ( sendto ( mcast_sockfd, &fParams, sizeof ( session_params_t ), MSG_DONTWAIT,
if ( sendto ( mcast_sockfd, &fParams, sizeof ( session_params_t ), 0,
reinterpret_cast<socket_address_t*> ( &fMcastAddr ), sizeof ( socket_address_t ) ) < 0 ) reinterpret_cast<socket_address_t*> ( &fMcastAddr ), sizeof ( socket_address_t ) ) < 0 )
jack_error ( "Can't send suicide request : %s", strerror ( errno ) ); jack_error ( "Can't send suicide request : %s", strerror ( errno ) );
close ( mcast_sockfd ); close ( mcast_sockfd );
@@ -357,7 +358,7 @@ namespace Jack
fTxHeader.fDataType = 's'; fTxHeader.fDataType = 's';
if ( !fParams.fSendMidiChannels && !fParams.fSendAudioChannels ) if ( !fParams.fSendMidiChannels && !fParams.fSendAudioChannels )
fTxHeader.fIsLastPckt = 'y'; fTxHeader.fIsLastPckt = 'y';
tx_bytes = Send ( reinterpret_cast<char*> ( &fTxHeader ), sizeof ( packet_header_t ), MSG_DONTWAIT );
tx_bytes = Send ( reinterpret_cast<char*> ( &fTxHeader ), sizeof ( packet_header_t ), 0 );
if ( tx_bytes < 1 ) if ( tx_bytes < 1 )
return tx_bytes; return tx_bytes;


@@ -374,7 +375,7 @@ namespace Jack
fTxHeader.fIsLastPckt = 'y'; fTxHeader.fIsLastPckt = 'y';
memcpy ( fTxBuffer, &fTxHeader, sizeof ( packet_header_t ) ); memcpy ( fTxBuffer, &fTxHeader, sizeof ( packet_header_t ) );
copy_size = fNetMidiCaptureBuffer->RenderToNetwork ( subproc, fTxHeader.fMidiDataSize ); copy_size = fNetMidiCaptureBuffer->RenderToNetwork ( subproc, fTxHeader.fMidiDataSize );
tx_bytes = Send ( fTxBuffer, sizeof ( packet_header_t ) + copy_size, MSG_DONTWAIT );
tx_bytes = Send ( fTxBuffer, sizeof ( packet_header_t ) + copy_size, 0 );
if ( tx_bytes < 1 ) if ( tx_bytes < 1 )
return tx_bytes; return tx_bytes;
} }
@@ -391,7 +392,7 @@ namespace Jack
fTxHeader.fIsLastPckt = 'y'; fTxHeader.fIsLastPckt = 'y';
memcpy ( fTxBuffer, &fTxHeader, sizeof ( packet_header_t ) ); memcpy ( fTxBuffer, &fTxHeader, sizeof ( packet_header_t ) );
fNetAudioCaptureBuffer->RenderFromJackPorts ( subproc ); fNetAudioCaptureBuffer->RenderFromJackPorts ( subproc );
tx_bytes = Send ( fTxBuffer, fAudioTxLen, MSG_DONTWAIT );
tx_bytes = Send ( fTxBuffer, fAudioTxLen, 0 );
if ( tx_bytes < 1 ) if ( tx_bytes < 1 )
return tx_bytes; return tx_bytes;
} }
@@ -644,7 +645,7 @@ static Jack::JackNetMasterManager* master_manager = NULL;
extern "C" extern "C"
{ {
#endif #endif
int jack_initialize ( jack_client_t* jack_client, const char* load_init )
EXPORT int jack_initialize ( jack_client_t* jack_client, const char* load_init )
{ {
if ( master_manager ) if ( master_manager )
{ {
@@ -659,7 +660,7 @@ extern "C"
} }
} }


void jack_finish ( void* arg )
EXPORT void jack_finish ( void* arg )
{ {
if ( master_manager ) if ( master_manager )
{ {


+ 7
- 1
common/SConscript View File

@@ -95,6 +95,7 @@ srcfiles_common_serverlib = [
'JackServer.cpp', 'JackServer.cpp',
'JackShmMem.cpp', 'JackShmMem.cpp',
'JackThreadedDriver.cpp', 'JackThreadedDriver.cpp',
'JackWaitThreadedDriver.cpp',
'shm.c', 'shm.c',
'JackSocket.cpp', 'JackSocket.cpp',
'JackSocketServerChannel.cpp', 'JackSocketServerChannel.cpp',
@@ -183,7 +184,6 @@ libenv.AppendUnique(CPPFLAGS = ['-fvisibility=hidden'])
clientlib = libenv.SharedLibrary(env['CLIENTLIB'], srcfiles_common_clientlib) clientlib = libenv.SharedLibrary(env['CLIENTLIB'], srcfiles_common_clientlib)
serverlib = libenv.SharedLibrary(env['SERVERLIB'], srcfiles_common_serverlib) serverlib = libenv.SharedLibrary(env['SERVERLIB'], srcfiles_common_serverlib)
netmanagerlib = libenv.SharedLibrary(env['NETMANAGERLIB'], 'JackNetManager.cpp')
env.Install( env['INSTALL_LIBDIR'], [clientlib, serverlib]) env.Install( env['INSTALL_LIBDIR'], [clientlib, serverlib])
env.Alias('install', env['INSTALL_LIBDIR']) env.Alias('install', env['INSTALL_LIBDIR'])


@@ -197,6 +197,12 @@ if env['PLATFORM'] == 'posix':
env.Command(env['INSTALL_LIBDIR'] + '/lib' + lib_name + '.so', env['INSTALL_LIBDIR'] + '/lib' + lib_name + '.so.' + str(env['JACKAPI_MAJOR_VERSION']), symlinkcmd) env.Command(env['INSTALL_LIBDIR'] + '/lib' + lib_name + '.so', env['INSTALL_LIBDIR'] + '/lib' + lib_name + '.so.' + str(env['JACKAPI_MAJOR_VERSION']), symlinkcmd)
env.Alias('install', env['INSTALL_LIBDIR'] + '/lib' + lib_name + '.so.' + str(env['JACKAPI_MAJOR_VERSION'])) env.Alias('install', env['INSTALL_LIBDIR'] + '/lib' + lib_name + '.so.' + str(env['JACKAPI_MAJOR_VERSION']))


# NetManager
netmanagerenv = env.Copy()
netmanagerenv.AppendUnique(CPPFLAGS = ['-fvisibility=hidden'])
env.InstallAs(env['INSTALL_ADDON_DIR'] + '/netmanager.so', netmanagerenv.SharedLibrary('netmanager', 'JackNetManager.cpp'))
env.Alias('install', env['INSTALL_ADDON_DIR'] + '/netmanager.so')

# Headers # Headers
for header in jack_headers: for header in jack_headers:
env.Install(env['INSTALL_INCLUDEDIR'], 'jack/' + header) env.Install(env['INSTALL_INCLUDEDIR'], 'jack/' + header)

+ 9
- 9
common/wscript View File

@@ -120,15 +120,15 @@ def build(bld):
clientlib.vnum = bld.env()['JACK_API_VERSION'] clientlib.vnum = bld.env()['JACK_API_VERSION']
clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden") clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")


netmanager_lib = bld.create_obj('cpp', 'shlib')
netmanager_lib.env['shlib_PATTERN'] = '%s.so'
netmanager_lib.includes = ['./jack', '.']
netmanager_lib.name = 'netmanager'
netmanager_lib.target = 'netmanager'
netmanager_lib.source = 'JackNetManager.cpp'
netmanager_lib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
netmanager_lib.inst_var = bld.env()['ADDON_DIR']
netmanager_lib.inst_dir = '/'
netmanagerlib = bld.create_obj('cpp', 'shlib')
netmanagerlib.env['shlib_PATTERN'] = '%s.so'
netmanagerlib.includes = ['./jack', '.']
netmanagerlib.name = 'netmanager'
netmanagerlib.target = 'netmanager'
netmanagerlib.source = 'JackNetManager.cpp'
netmanagerlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
netmanagerlib.inst_var = bld.env()['ADDON_DIR']
netmanagerlib.inst_dir = '/'


install_files('PREFIX', 'include/jack', 'jack/*.h') install_files('PREFIX', 'include/jack', 'jack/*.h')




Loading…
Cancel
Save