mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-14 08:01:38 +01:00
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
This commit is contained in:
commit
d261aa8184
4 changed files with 69 additions and 9 deletions
|
@ -216,6 +216,33 @@ CommsRelayState2Str( CommsRelayState state )
|
|||
#undef CASE_STR
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char*
|
||||
XWREASON2Str( XWREASON reason )
|
||||
{
|
||||
#define CASE_STR(s) case s: return #s
|
||||
switch( reason ) {
|
||||
CASE_STR(XWRELAY_ERROR_NONE);
|
||||
CASE_STR(XWRELAY_ERROR_OLDFLAGS);
|
||||
CASE_STR(XWRELAY_ERROR_BADPROTO);
|
||||
CASE_STR(XWRELAY_ERROR_RELAYBUSY);
|
||||
CASE_STR(XWRELAY_ERROR_SHUTDOWN);
|
||||
CASE_STR(XWRELAY_ERROR_TIMEOUT);
|
||||
CASE_STR(XWRELAY_ERROR_HEART_YOU);
|
||||
CASE_STR(XWRELAY_ERROR_HEART_OTHER);
|
||||
CASE_STR(XWRELAY_ERROR_LOST_OTHER);
|
||||
CASE_STR(XWRELAY_ERROR_OTHER_DISCON);
|
||||
CASE_STR(XWRELAY_ERROR_NO_ROOM);
|
||||
CASE_STR(XWRELAY_ERROR_DUP_ROOM);
|
||||
CASE_STR(XWRELAY_ERROR_TOO_MANY);
|
||||
CASE_STR(XWRELAY_ERROR_DELETED);
|
||||
CASE_STR(XWRELAY_ERROR_LASTERR);
|
||||
default:
|
||||
XP_ASSERT(0);
|
||||
}
|
||||
#undef CASE_STR
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
|
@ -236,7 +263,7 @@ static void
|
|||
init_relay( CommsCtxt* comms, XP_U16 nPlayersHere, XP_U16 nPlayersTotal )
|
||||
{
|
||||
comms->r.myHostID = comms->isServer? HOST_ID_SERVER: HOST_ID_NONE;
|
||||
XP_LOGF( "%s: set myHostID to %d", __func__, comms->r.myHostID );
|
||||
XP_LOGF( "%s: set hostid: %x", __func__, comms->r.myHostID );
|
||||
set_relay_state( comms, COMMS_RELAYSTATE_UNCONNECTED );
|
||||
comms->r.nPlayersHere = nPlayersHere;
|
||||
comms->r.nPlayersTotal = nPlayersTotal;
|
||||
|
@ -1173,6 +1200,7 @@ got_connect_cmd( CommsCtxt* comms, XWStreamCtxt* stream,
|
|||
set_relay_state( comms, reconnected ? COMMS_RELAYSTATE_RECONNECTED
|
||||
: COMMS_RELAYSTATE_CONNECTED );
|
||||
comms->r.myHostID = stream_getU8( stream );
|
||||
XP_LOGF( "%s: set hostid: %x", __func__, comms->r.myHostID );
|
||||
isServer = HOST_ID_SERVER == comms->r.myHostID;
|
||||
if ( isServer != comms->isServer ) {
|
||||
comms->isServer = isServer;
|
||||
|
@ -1241,7 +1269,7 @@ relayPreProcess( CommsCtxt* comms, XWStreamCtxt* stream, XWHostID* senderID )
|
|||
XP_ASSERT( comms->r.myHostID == HOST_ID_NONE
|
||||
|| comms->r.myHostID == srcID );
|
||||
comms->r.myHostID = srcID;
|
||||
XP_LOGF( "set hostid: %x", comms->r.myHostID );
|
||||
XP_LOGF( "%s: set hostid: %x", __func__, comms->r.myHostID );
|
||||
|
||||
#ifdef DEBUG
|
||||
{
|
||||
|
|
|
@ -195,6 +195,7 @@ XP_Bool comms_isConnected( const CommsCtxt* const comms );
|
|||
void comms_getStats( CommsCtxt* comms, XWStreamCtxt* stream );
|
||||
const char* ConnType2Str( CommsConnType typ );
|
||||
const char* CommsRelayState2Str( CommsRelayState state );
|
||||
const char* XWREASON2Str( XWREASON reason );
|
||||
# endif
|
||||
|
||||
EXTERN_C_END
|
||||
|
|
|
@ -1432,9 +1432,11 @@ relay_connd_curses( void* XP_UNUSED(closure), XP_UCHAR* const XP_UNUSED(room),
|
|||
}
|
||||
|
||||
static void
|
||||
relay_error_curses( void* XP_UNUSED(closure), XWREASON XP_UNUSED(relayErr) )
|
||||
relay_error_curses( void* XP_UNUSED(closure), XWREASON XP_UNUSED_DBG(relayErr) )
|
||||
{
|
||||
LOG_FUNC();
|
||||
#ifdef DEBUG
|
||||
XP_LOGF( "%s(%s)", __func__, XWREASON2Str( relayErr ) );
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -8,6 +8,7 @@ PORT=${PORT:-10997}
|
|||
TIMEOUT=${TIMEOUT:-$((NGAMES*60+500))}
|
||||
DICTS=${DICTS:-dict.xwd}
|
||||
SAVE_GOOD=${SAVE_GOOD:-YES}
|
||||
RESIGN_RATIO=${RESIGN_RATIO:-$((NGAMES/3))}
|
||||
|
||||
declare -a DICTS_ARR
|
||||
for DICT in $DICTS; do
|
||||
|
@ -24,6 +25,8 @@ if [ "$SAVE_GOOD" = YES ]; then
|
|||
DONEDIR=$LOGDIR/done
|
||||
mkdir -p $DONEDIR
|
||||
fi
|
||||
DEADDIR=$LOGDIR/dead
|
||||
mkdir -p $DEADDIR
|
||||
|
||||
USE_GTK=${USE_GTK:-FALSE}
|
||||
|
||||
|
@ -109,7 +112,8 @@ build_cmds() {
|
|||
COUNTER=$((COUNTER+1))
|
||||
done
|
||||
done
|
||||
}
|
||||
echo "finished creating $COUNTER commands"
|
||||
} # build_cmds
|
||||
|
||||
launch() {
|
||||
LOG=${LOGS[$1]}
|
||||
|
@ -137,6 +141,28 @@ close_device() {
|
|||
unset LOGS[$ID]
|
||||
}
|
||||
|
||||
kill_from_log() {
|
||||
LOG=$1
|
||||
RELAYID=$(./scripts/relayID.sh $LOG)
|
||||
if [ -n "$RELAYID" ]; then
|
||||
../relay/rq -d $RELAYID 2>/dev/null || true
|
||||
return 0 # success
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
maybe_resign() {
|
||||
KEY=$1
|
||||
LOG=${LOGS[$KEY]}
|
||||
if grep -q XWRELAY_ALLHERE $LOG; then
|
||||
if [ 0 -eq $(($RANDOM % $RESIGN_RATIO)) ]; then
|
||||
echo "making $LOG $(connName $LOG) resign..."
|
||||
kill_from_log $LOG && close_device $KEY $DEADDIR
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
check_game() {
|
||||
KEY=$1
|
||||
LOG=${LOGS[$KEY]}
|
||||
|
@ -164,13 +190,16 @@ check_game() {
|
|||
echo -n "Closing $CONNNAME: "
|
||||
for ID in $OTHERS $KEY; do
|
||||
echo -n "${LOGS[$ID]}, "
|
||||
RELAYID=$(./scripts/relayID.sh ${LOGS[$ID]})
|
||||
if [ -n "$RELAYID" ]; then
|
||||
../relay/rq -d $RELAYID 2>/dev/null || true
|
||||
fi
|
||||
kill_from_log ${LOGS[$ID]} || true
|
||||
close_device $ID $DONEDIR
|
||||
done
|
||||
date
|
||||
elif grep -q 'relay_error_curses(XWRELAY_ERROR_DELETED)' $LOG; then
|
||||
echo "deleting $LOG $(connName $LOG) b/c another resigned"
|
||||
kill_from_log $LOG || true
|
||||
close_device $KEY $DEADDIR
|
||||
else
|
||||
maybe_resign $KEY
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue