Browse Source

Implement connection time-out

git-svn-id: http://subversion.jackaudio.org/jack/jack2/branches/libjacknet@3954 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.9.8
sletz 15 years ago
parent
commit
347ff4c348
4 changed files with 26 additions and 17 deletions
  1. +8
    -5
      common/JackNetAPI.cpp
  2. +14
    -8
      common/JackNetInterface.cpp
  3. +3
    -3
      common/JackNetInterface.h
  4. +1
    -1
      common/jack/net.h

+ 8
- 5
common/JackNetAPI.cpp View File

@@ -46,7 +46,7 @@ extern "C"
int audio_input;
int audio_output;
int midi_input;
int midi_ouput;
int midi_output;
int mtu;
int time_out; // in millisecond, -1 means in infinite
char mode;
@@ -230,8 +230,8 @@ struct JackNetExtMaster : public JackNetMasterInterface {
result->audio_input = fParams.fSendAudioChannels;
result->audio_output = fParams.fReturnAudioChannels;
result->midi_input = fParams.fSendMidiChannels;
result->midi_ouput = fParams.fReturnMidiChannels;
result->midi_ouput = fParams.fMtu;
result->midi_output = fParams.fReturnMidiChannels;
result->mtu = fParams.fMtu;
result->mode = fParams.fNetworkMode;
return 0;
@@ -425,6 +425,8 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
JackMidiBuffer** fMidiCaptureBuffer;
JackMidiBuffer** fMidiPlaybackBuffer;
int fConnectTimeOut;
JackNetExtSlave(const char* ip,
int port,
const char* name,
@@ -448,9 +450,10 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
fParams.fSendAudioChannels = request->audio_input;
fParams.fReturnAudioChannels = request->audio_output;
fParams.fSendMidiChannels = request->midi_input;
fParams.fReturnMidiChannels = request->midi_ouput;
fParams.fReturnMidiChannels = request->midi_output;
fParams.fNetworkMode = request->mode;
fParams.fSlaveSyncMode = 1;
fConnectTimeOut = request->time_out;
// Create name with hostname and client name
GetHostName(host_name, JACK_CLIENT_NAME_SIZE);
@@ -468,7 +471,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
int Open(jack_master_t* result)
{
// Init network connection
if (!JackNetSlaveInterface::InitConnection())
if (!JackNetSlaveInterface::InitConnection(fConnectTimeOut))
return -1;
// Then set global parameters


+ 14
- 8
common/JackNetInterface.cpp View File

@@ -609,10 +609,11 @@ namespace Jack
// Separate the connection protocol into two separated step
bool JackNetSlaveInterface::InitConnection()
bool JackNetSlaveInterface::InitConnection(int time_out)
{
jack_log ( "JackNetSlaveInterface::InitConnection()" );

jack_log("JackNetSlaveInterface::InitConnection()");
int try_count = (time_out > 0) ? ((1000000 * time_out) / SLAVE_INIT_TIMEOUT) : LONG_MAX;
//set the parameters to send
strcpy (fParams.fPacketType, "params");
fParams.fProtocolVersion = SLAVE_PROTOCOL;
@@ -622,13 +623,13 @@ namespace Jack
do
{
//get a master
status = SendAvailableToMaster();
status = SendAvailableToMaster(try_count);
if (status == NET_SOCKET_ERROR)
return false;
}
while (status != NET_CONNECTED);
while (status != NET_CONNECTED && --try_count > 0);
return true;
return (try_count != 0);
}
bool JackNetSlaveInterface::InitRendering()
@@ -649,7 +650,7 @@ namespace Jack
return true;
}

net_status_t JackNetSlaveInterface::SendAvailableToMaster()
net_status_t JackNetSlaveInterface::SendAvailableToMaster(int count)
{
jack_log ( "JackNetSlaveInterface::SendAvailableToMaster()" );
//utility
@@ -697,7 +698,12 @@ namespace Jack
return NET_RECV_ERROR;
}
}
while ( strcmp ( host_params.fPacketType, fParams.fPacketType ) && ( GetPacketType ( &host_params ) != SLAVE_SETUP ) );
while (strcmp(host_params.fPacketType, fParams.fPacketType) && (GetPacketType(&host_params) != SLAVE_SETUP) && (--count > 0));
// Time out failure..
if (count == 0) {
return NET_CONNECT_ERROR;
}
//everything is OK, copy parameters
SessionParamsDisplay(&host_params);


+ 3
- 3
common/JackNetInterface.h View File

@@ -145,10 +145,10 @@ namespace Jack
static uint fSlaveCounter;
bool Init();
bool InitConnection();
bool InitConnection(int time_out);
bool InitRendering();
net_status_t SendAvailableToMaster();
net_status_t SendAvailableToMaster(int count = LONG_MAX);
net_status_t SendStartToMaster();
bool SetParams();
@@ -207,7 +207,7 @@ namespace Jack
#define SLAVE_SETUP_RETRY 5

#define MASTER_INIT_TIMEOUT 1000000 // in usec
#define SLAVE_INIT_TIMEOUT 2000000 // in usec
#define SLAVE_INIT_TIMEOUT 1000000 // in usec

#define CYCLE_OFFSET_FAST 0
#define CYCLE_OFFSET_NORMAL 1


+ 1
- 1
common/jack/net.h View File

@@ -49,7 +49,7 @@ typedef struct {
int midi_input; // from master or to slave
int midi_output; // to master or from slave
int mtu;
int time_out; // in millisecond, -1 means in infinite
int time_out; // in second, -1 means in infinite
char mode;

} jack_slave_t;


Loading…
Cancel
Save