Merge branch 'relay_proxy' of /home/andy2/dev/git/LOCAL_ORIGIN into relay_proxy

This commit is contained in:
eehouse@eehouse.org 2010-11-10 07:17:39 -08:00 committed by Andy2
commit 048eff92b8
17 changed files with 78 additions and 113 deletions

View file

@ -734,7 +734,7 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
m_fillPaint.setTextAlign( Paint.Align.CENTER ); m_fillPaint.setTextAlign( Paint.Align.CENTER );
m_canvas.drawText( text, center, bottom, m_fillPaint ); m_canvas.drawText( text, center, bottom, m_fillPaint );
} }
} } // drawCentered
private void drawScaled( String text, final Rect rect, int descent ) private void drawScaled( String text, final Rect rect, int descent )
{ {
@ -750,7 +750,7 @@ public class BoardView extends View implements DrawCtx, BoardHandler,
int bottom = local.bottom - descent; int bottom = local.bottom - descent;
canvas.drawText( text, 0, bottom, m_fillPaint ); canvas.drawText( text, 0, bottom, m_fillPaint );
m_canvas.drawBitmap( bitmap, local, rect, m_drawPaint ); m_canvas.drawBitmap( bitmap, null, rect, m_drawPaint );
} }
private void positionDrawTile( final Rect rect, String text, int val ) private void positionDrawTile( final Rect rect, String text, int val )

View file

@ -1,11 +0,0 @@
franklin
palm
ARMV4Rel
emulatorDbg
PALM_PNO
obj_linux_memdbg
obj_linux_rel
obj_win32_dbg
obj_win32_rel
obj_wince_dbg
obj_wince_rel

View file

@ -1,5 +0,0 @@
*.bin
*.xwd
*.pdb
*.inf
*.dict.gz

View file

@ -1,3 +0,0 @@
*.bin
*.xwd
*.pdb

View file

@ -1,10 +0,0 @@
*.bin
*.pdb
*.xwd
*.saved
*.pdr
*.ehouse
*.seb
decompose
temp
*.stamp

View file

@ -1,3 +0,0 @@
*.bin
*.pdb
*.xwd

View file

@ -1,3 +0,0 @@
*.bin
*.xwd
*.pdb

View file

@ -1,4 +0,0 @@
*.bin
*.pdb
*.xwd
*.seb

View file

@ -1,3 +0,0 @@
*.bin
*.xwd
*.pdb

View file

@ -1,8 +0,0 @@
*.bin
*.pdb
*.saved
*.pdr
*.ehouse
*.seb
decompose
temp

View file

@ -1,7 +0,0 @@
*.bin
*.xwd
*.pdb
*.saved
*.pdr
*.ehouse
*.seb

View file

@ -1,4 +0,0 @@
*.bin
*.pdb
*.xwd
*.seb

View file

@ -1 +0,0 @@
obj_linux_memdbg

View file

@ -1,4 +1,5 @@
#!/bin/bash #!/bin/bash
set -u -e
NGAMES=${NGAMES:-1} NGAMES=${NGAMES:-1}
NROOMS=${NROOMS:-1} NROOMS=${NROOMS:-1}
@ -51,7 +52,7 @@ connName() {
sort -u sort -u
} }
while [ -n "$1" ]; do while [ "$#" -gt 0 ]; do
case $1 in case $1 in
*) usage *) usage
;; ;;
@ -62,7 +63,7 @@ done
declare -A CHECKED_ROOMS declare -A CHECKED_ROOMS
check_room() { check_room() {
ROOM=$1 ROOM=$1
if [ -z "${CHECKED_ROOMS[$ROOM]}" ]; then if [ -z ${CHECKED_ROOMS[$ROOM]:-""} ]; then
NUM=$(echo "SELECT COUNT(*) FROM games WHERE ntotal!=sum_array(nperdevice) AND room='$ROOM'" | NUM=$(echo "SELECT COUNT(*) FROM games WHERE ntotal!=sum_array(nperdevice) AND room='$ROOM'" |
psql -q -t xwgames) psql -q -t xwgames)
NUM=$((NUM+0)) NUM=$((NUM+0))
@ -82,8 +83,10 @@ build_cmds() {
check_room $ROOM check_room $ROOM
NDEVS=$(($RANDOM%3+2)) NDEVS=$(($RANDOM%3+2))
DICT=${DICTS_ARR[$((GAME%${#DICTS_ARR[*]}))]} DICT=${DICTS_ARR[$((GAME%${#DICTS_ARR[*]}))]}
# make one in three games public
[ $((RANDOM%3)) -eq 0 ] && PUBLIC="-A -R" || PUBLIC=""
unset OTHERS OTHERS=""
for II in $(seq 2 $NDEVS); do for II in $(seq 2 $NDEVS); do
OTHERS="-N $OTHERS" OTHERS="-N $OTHERS"
done done
@ -94,6 +97,7 @@ build_cmds() {
touch $LOG # so greps won't show errors touch $LOG # so greps won't show errors
CMD="./obj_linux_memdbg/xwords -C $ROOM -r ${NAMES[$DEV]} $OTHERS" CMD="./obj_linux_memdbg/xwords -C $ROOM -r ${NAMES[$DEV]} $OTHERS"
CMD="$CMD -d $DICT -p $PORT -a $HOST -f $FILE -z 1:3 $PLAT_PARMS" CMD="$CMD -d $DICT -p $PORT -a $HOST -f $FILE -z 1:3 $PLAT_PARMS"
CMD="$CMD $PUBLIC"
CMDS[$COUNTER]=$CMD CMDS[$COUNTER]=$CMD
FILES[$COUNTER]=$FILE FILES[$COUNTER]=$FILE
LOGS[$COUNTER]=$LOG LOGS[$COUNTER]=$LOG
@ -133,7 +137,7 @@ check_game() {
KEY=$1 KEY=$1
LOG=${LOGS[$KEY]} LOG=${LOGS[$KEY]}
CONNNAME="$(connName $LOG)" CONNNAME="$(connName $LOG)"
unset OTHERS OTHERS=""
if [ -n "$CONNNAME" ]; then if [ -n "$CONNNAME" ]; then
if grep -q '\[unused tiles\]' $LOG; then if grep -q '\[unused tiles\]' $LOG; then
ALL_DONE=TRUE ALL_DONE=TRUE
@ -143,7 +147,7 @@ check_game() {
CONNNAME2="$(connName $ALOG)" CONNNAME2="$(connName $ALOG)"
if [ "$CONNNAME2" = "$CONNNAME" ]; then if [ "$CONNNAME2" = "$CONNNAME" ]; then
if ! grep -q '\[unused tiles\]' $ALOG; then if ! grep -q '\[unused tiles\]' $ALOG; then
unset OTHERS OTHERS=""
break break
fi fi
OTHERS="$OTHERS $INDX" OTHERS="$OTHERS $INDX"
@ -197,10 +201,10 @@ print_stats() {
} }
echo "*********$0 starting: $(date)**************" echo "*********$0 starting: $(date)**************"
STARTTIME=$(date +%s)
build_cmds build_cmds
run_cmds run_cmds
print_stats print_stats
wait wait
echo "*********$0 finished: $(date)**************" echo "*********$0 finished: $(date) (took $(($(date +%s)-$STARTTIME)) seconds)**************"

View file

@ -1 +0,0 @@
xwrelay

View file

@ -21,6 +21,7 @@
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <stdarg.h>
#include "dbmgr.h" #include "dbmgr.h"
#include "mlock.h" #include "mlock.h"
@ -35,6 +36,10 @@
static DBMgr* s_instance = NULL; static DBMgr* s_instance = NULL;
static int sumArray( const char* const str ); static int sumArray( const char* const str );
#define DELIM "\1"
static void formatParams( char* paramValues[], int nParams, const char* fmt,
char* buf, int bufLen, ... );
/* static */ DBMgr* /* static */ DBMgr*
DBMgr::Get() DBMgr::Get()
@ -78,14 +83,26 @@ DBMgr::AddNew( const char* cookie, const char* connName, CookieID cid,
if ( !cookie ) cookie = ""; if ( !cookie ) cookie = "";
if ( !connName ) connName = ""; if ( !connName ) connName = "";
const char* fmt = "INSERT INTO " GAMES_TABLE const char* command = "INSERT INTO " GAMES_TABLE
" (cid, room, connName, nTotal, nPerDevice, lang, pub)" " (cid, room, connName, nTotal, nPerDevice, lang, pub)"
" VALUES( %d, '%s', '%s', %d, ARRAY[0,0,0,0], %d, %s )"; " VALUES( $1, $2, $3, $4, ARRAY[0,0,0,0], $5, $6 )";
char buf[256]; int nParams = 6;
snprintf( buf, sizeof(buf), fmt, cid/*m_nextCID++*/, cookie, connName, char* paramValues[nParams];
nPlayersT, langCode, isPublic?"TRUE":"FALSE" ); char buf[512];
logf( XW_LOGINFO, "passing %s", buf ); formatParams( paramValues, nParams,
execSql( buf ); "%d"DELIM"%s"DELIM"%s"DELIM"%d"DELIM"%d"DELIM"%s",
buf, sizeof(buf), cid, cookie, connName, nPlayersT,
langCode, isPublic?"TRUE":"FALSE" );
PGresult* result = PQexecParams( getThreadConn(), command,
nParams, NULL,
paramValues,
NULL, NULL, 0 );
if ( PGRES_COMMAND_OK != PQresultStatus(result) ) {
logf( XW_LOGERROR, "PQexec=>%s;%s", PQresStatus(PQresultStatus(result)),
PQresultErrorMessage(result) );
}
PQclear( result );
} }
CookieID CookieID
@ -122,21 +139,27 @@ DBMgr::FindOpen( const char* cookie, int lang, int nPlayersT, int nPlayersH,
{ {
CookieID cid = 0; CookieID cid = 0;
int nParams = 5;
char* paramValues[nParams];
char buf[512];
formatParams( paramValues, nParams,
"%s"DELIM"%d"DELIM"%d"DELIM"%d"DELIM"%s", buf, sizeof(buf),
cookie, lang, nPlayersT, nPlayersH, wantsPublic?"TRUE":"FALSE" );
/* NOTE: ILIKE, for case-insensitive comparison, is a postgres extension /* NOTE: ILIKE, for case-insensitive comparison, is a postgres extension
to SQL. */ to SQL. */
const char* fmt = "SELECT cid, connName, nPerDevice FROM " GAMES_TABLE const char* cmd = "SELECT cid, connName, nPerDevice FROM " GAMES_TABLE
" WHERE room ILIKE '%s'" " WHERE room ILIKE $1"
" AND lang = %d" " AND lang = $2"
" AND nTotal = %d" " AND nTotal = $3"
" AND %d <= nTotal-sum_array(nPerDevice)" " AND $4 <= nTotal-sum_array(nPerDevice)"
" AND %s = pub" " AND $5 = pub"
" LIMIT 1"; " LIMIT 1";
char query[256];
snprintf( query, sizeof(query), fmt,
cookie, lang, nPlayersT, nPlayersH, wantsPublic?"TRUE":"FALSE" );
logf( XW_LOGINFO, "query: %s", query );
PGresult* result = PQexec( getThreadConn(), query ); PGresult* result = PQexecParams( getThreadConn(), cmd,
nParams, NULL,
paramValues,
NULL, NULL, 0 );
if ( 1 == PQntuples( result ) ) { if ( 1 == PQntuples( result ) ) {
cid = atoi( PQgetvalue( result, 0, 0 ) ); cid = atoi( PQgetvalue( result, 0, 0 ) );
snprintf( connNameBuf, bufLen, "%s", PQgetvalue( result, 0, 1 ) ); snprintf( connNameBuf, bufLen, "%s", PQgetvalue( result, 0, 1 ) );
@ -441,6 +464,29 @@ DBMgr::RemoveStoredMessage( int msgID )
execSql( query ); execSql( query );
} }
static void
formatParams( char* paramValues[], int nParams, const char* fmt, char* buf,
int bufLen, ... )
{
va_list ap;
va_start( ap, bufLen );
int len = vsnprintf( buf, bufLen, fmt, ap );
int ii, pnum;
for ( pnum = 0, ii = 0; ii < len && pnum < nParams; ++pnum ) {
paramValues[pnum] = &buf[ii];
for ( ; ii < len; ++ii ) {
if ( buf[ii] == DELIM[0] ) {
buf[ii] = '\0';
++ii;
break;
}
}
}
va_end(ap);
}
static void static void
destr_function( void* conn ) destr_function( void* conn )
{ {

View file

@ -1,22 +0,0 @@
ARMV4Rel
ARMV4Dbg
obj_win32_dbg
obj_win32_rel
obj_wince_dbg
obj_wince_rel
emulatorDbg
ARMDbg
ARMRel
X86Dbg
X86Rel
xwords.vcb
xwords.vcl
xwords.vco
xwords.vcw
vc60.pdb
obj_win32
obj_wince
*.xwg
*.xwd
_newgame
xwDbgLog.txt