From 8487d212a34c414661b8210f59a797d55fef1f77 Mon Sep 17 00:00:00 2001 From: Eric House Date: Sat, 10 Feb 2024 10:23:43 -0800 Subject: [PATCH] introduce XP_LOGFFV and use it to remove some excessive logging --- xwords4/android/jni/andutils.c | 2 +- xwords4/android/jni/xportwrapper.c | 6 ++--- xwords4/common/comms.c | 35 ++++++++++++++++++------------ xwords4/common/comtypes.h | 10 +++++++++ xwords4/common/knownplyr.c | 10 +++++---- 5 files changed, 41 insertions(+), 22 deletions(-) diff --git a/xwords4/android/jni/andutils.c b/xwords4/android/jni/andutils.c index f3d511776..ce2f8a329 100644 --- a/xwords4/android/jni/andutils.c +++ b/xwords4/android/jni/andutils.c @@ -876,7 +876,7 @@ msgAndTopicProc( void* closure, const XP_UCHAR* topic, mtp->jPackets[mtp->count] = makeByteArray( env, msgLen, (const jbyte*)msgBuf ); ++mtp->count; - XP_LOGFF( "mtp->count now: %d", mtp->count ); + XP_LOGFFV( "mtp->count now: %d", mtp->count ); } } } diff --git a/xwords4/android/jni/xportwrapper.c b/xwords4/android/jni/xportwrapper.c index 794cdc061..25d55ada3 100644 --- a/xwords4/android/jni/xportwrapper.c +++ b/xwords4/android/jni/xportwrapper.c @@ -55,13 +55,13 @@ passTAPToAndroid( AndTransportProcs* aprocs, JNIEnv* env, jobject jtap ) { const char* sig = "(L" PKG_PATH("jni/XwJNI$TopicsAndPackets") ";)I"; jmethodID mid = getMethodID( env, aprocs->jxport, "transportSendMQTT", sig ); -#ifdef DEBUG +#ifdef ENABLE_LOGFFV XP_S16 tmp = #endif (*env)->CallIntMethod( env, aprocs->jxport, mid, jtap ); - XP_LOGFF( "%s() => %d", sig, tmp ); + XP_LOGFFV( "%s() => %d", sig, tmp ); deleteLocalRef( env, jtap ); - LOG_RETURN_VOID(); + XP_LOGFFV(); } #ifdef XWFEATURE_COMMS_INVITE diff --git a/xwords4/common/comms.c b/xwords4/common/comms.c index d55fb7394..513e60f08 100644 --- a/xwords4/common/comms.c +++ b/xwords4/common/comms.c @@ -1,6 +1,6 @@ /* -*- compile-command: "cd ../linux && make MEMDEBUG=TRUE -j3"; -*- */ /* - * Copyright 2001 - 2023 by Eric House (xwords@eehouse.org). All rights + * Copyright 2001 - 2024 by Eric House (xwords@eehouse.org). All rights * reserved. * * This program is free software; you can redistribute it and/or @@ -18,6 +18,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +// #define ENABLE_LOGFFV + #ifdef USE_STDIO # include #endif @@ -60,7 +62,12 @@ #endif #ifdef DEBUG -# define COMMS_LOGFF( FMT, ... ) { \ +# ifdef ENABLE_LOGFFV +# define COMMS_LOGFFV COMMS_LOGFF +# else +# define COMMS_LOGFFV(...) +# endif +# define COMMS_LOGFF( FMT, ... ) { \ XP_U32 gameID = comms->util->gameInfo->gameID; \ XP_GID_LOGFF( gameID, FMT, ##__VA_ARGS__ ); \ } @@ -836,7 +843,7 @@ comms_makeFromStream( MPFORMAL XWEnv xwe, XWStreamCtxt* stream, } if ( addr_hasType( &selfAddr, COMMS_CONN_RELAY ) ) { comms->rr.myHostID = stream_getU8( stream ); - COMMS_LOGFF( "loaded myHostID: %d", comms->rr.myHostID ); + COMMS_LOGFFV( "loaded myHostID: %d", comms->rr.myHostID ); stringFromStreamHere( stream, comms->rr.connName, sizeof(comms->rr.connName) ); } @@ -844,7 +851,7 @@ comms_makeFromStream( MPFORMAL XWEnv xwe, XWStreamCtxt* stream, XP_U16 queueLen = stream_getU8( stream ); XP_U16 nAddrRecs = stream_getU8( stream ); - COMMS_LOGFF( "nAddrRecs: %d", nAddrRecs ); + COMMS_LOGFFV( "nAddrRecs: %d", nAddrRecs ); AddressRecord** prevsAddrNext = &comms->recs; for ( int ii = 0; ii < nAddrRecs; ++ii ) { AddressRecord* rec = (AddressRecord*)XP_CALLOC( mpool, sizeof(*rec)); @@ -861,7 +868,7 @@ comms_makeFromStream( MPFORMAL XWEnv xwe, XWStreamCtxt* stream, rec->lastMsgSaved = rec->lastMsgRcd = stream_getU16( stream ); } #ifdef LOG_COMMS_MSGNOS - COMMS_LOGFF( "read lastMsgRcd of %d for addr %d", rec->lastMsgRcd, ii ); + COMMS_LOGFFV( "read lastMsgRcd of %d for addr %d", rec->lastMsgRcd, ii ); #endif if ( version >= STREAM_VERS_BLUETOOTH2 ) { rec->lastMsgAckd = stream_getU16( stream ); @@ -872,7 +879,7 @@ comms_makeFromStream( MPFORMAL XWEnv xwe, XWStreamCtxt* stream, } CNO_FMT( cbuf, rec->channelNo ); - COMMS_LOGFF( "loaded rec %d: %s", ii, cbuf ); + COMMS_LOGFFV( "loaded rec %d: %s", ii, cbuf ); *prevsAddrNext = rec; prevsAddrNext = &rec->next; @@ -2007,8 +2014,8 @@ removeFromQueue( CommsCtxt* comms, XWEnv xwe, XP_PlayerAddr channelNo, MsgID msg THREAD_CHECK_START( comms ); assertQueueOk( comms ); CNO_FMT( cbuf, channelNo ); - COMMS_LOGFF( "(channelNo=%d): remove msgs <= " XP_LD " for %s (queueLen: %d)", - channelNo, msgID, cbuf, comms->queueLen ); + COMMS_LOGFFV( "(channelNo=%d): remove msgs <= " XP_LD " for %s (queueLen: %d)", + channelNo, msgID, cbuf, comms->queueLen ); #ifdef DEBUG XP_U16 prevLen = comms->queueLen; #endif @@ -2026,7 +2033,7 @@ removeFromQueue( CommsCtxt* comms, XWEnv xwe, XP_PlayerAddr channelNo, MsgID msg } XP_ASSERT( comms->queueLen <= prevLen ); - COMMS_LOGFF( "queueLen now %d (was %d)", comms->queueLen, prevLen ); + COMMS_LOGFFV( "queueLen now %d (was %d)", comms->queueLen, prevLen ); #ifdef DEBUG assertQueueOk( comms ); @@ -2740,8 +2747,8 @@ getRecordFor( const CommsCtxt* comms, const XP_PlayerAddr channelNo ) XP_ASSERT( comms->isServer || !rec->next ); CNO_FMT( cbuf1, rec->channelNo ); - COMMS_LOGFF( "comparing rec channel %s with addr channel %s", - cbuf1, cbuf ); + COMMS_LOGFFV( "comparing rec channel %s with addr channel %s", + cbuf1, cbuf ); /* Invite case: base on channelNo bits if the rest is 0 */ if ( (0 == (rec->channelNo & ~CHANNEL_MASK)) && (0 == (channelNo & ~CHANNEL_MASK)) ) { @@ -2749,14 +2756,14 @@ getRecordFor( const CommsCtxt* comms, const XP_PlayerAddr channelNo ) break; } } else if ( (rec->channelNo & ~CHANNEL_MASK) == (channelNo & ~CHANNEL_MASK) ) { - COMMS_LOGFF( "match based on channels!!!" ); + COMMS_LOGFFV( "match based on channels!!!" ); /* This is so wrong for addresses coming from invites. Why works with GTK? */ break; } } - COMMS_LOGFF( "(%s) => %p", cbuf, rec ); + COMMS_LOGFFV( "(%s) => %p", cbuf, rec ); return rec; } /* getRecordFor */ @@ -2927,7 +2934,7 @@ validateChannelMessage( CommsCtxt* comms, XWEnv xwe, const CommsAddrRec* addr, /* an ACK; do nothing */ rec = NULL; } else if ( msgID == rec->lastMsgRcd + 1 ) { - COMMS_LOGFF( TAGFMT() "expected %d AND got %d", TAGPRMS, + COMMS_LOGFFV( TAGFMT() "expected %d AND got %d", TAGPRMS, msgID, msgID ); } else { COMMS_LOGFF( TAGFMT() "expected %d, got %d", TAGPRMS, diff --git a/xwords4/common/comtypes.h b/xwords4/common/comtypes.h index 223c4d440..e269852ab 100644 --- a/xwords4/common/comtypes.h +++ b/xwords4/common/comtypes.h @@ -410,6 +410,16 @@ typedef struct _TrayTileSet { #define LOG_POS(strm) XP_LOGF( "%s(); line %d; read_pos: %X", __func__, __LINE__, \ stream_getPos((strm), POS_READ) ) +/* The idea is that an individual .c file needing logging when being debugged + but not wanting to flood the logs in the normal case uses XP_LOGFFV in + place of XP_LOGFF, and then #defines ENABLE_LOGFFV at the very top of itself + (before any #includes). */ +#ifdef ENABLE_LOGFFV +# define XP_LOGFFV XP_LOGFF +#else +# define XP_LOGFFV(...) +#endif + #ifndef XP_USE # define XP_USE(v) v=v #endif diff --git a/xwords4/common/knownplyr.c b/xwords4/common/knownplyr.c index b234f558c..656f163b3 100644 --- a/xwords4/common/knownplyr.c +++ b/xwords4/common/knownplyr.c @@ -18,6 +18,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +// #define ENABLE_LOGFFV 1 + #include "knownplyr.h" #include "strutils.h" #include "comms.h" @@ -160,7 +162,7 @@ makeUniqueName( const KPState* state, const XP_UCHAR* name, break; } } - XP_LOGFF( "created new name: %s", newName ); + XP_LOGFFV( "created new name: %s", newName ); } static int @@ -256,14 +258,14 @@ addPlayer( XW_DUtilCtxt* XP_UNUSED_DBG(dutil), KPState* state, &newPlayer->links, compByName ); state->dirty = XP_TRUE; } - XP_LOGFF( "nPlayers now: %d", dll_length( &state->players->links ) ); + XP_LOGFFV( "nPlayers now: %d", dll_length( &state->players->links ) ); } XP_Bool kplr_addAddrs( XW_DUtilCtxt* dutil, XWEnv xwe, const CurGameInfo* gi, CommsAddrRec addrs[], XP_U16 nAddrs, XP_U32 modTime ) { - XP_LOGFF( "(nAddrs=%d)", nAddrs ); + XP_LOGFFV( "(nAddrs=%d)", nAddrs ); XP_ASSERT( modTime ); XP_Bool canUse = XP_TRUE; for ( int ii = 0; ii < nAddrs && canUse; ++ii ) { @@ -286,7 +288,7 @@ kplr_addAddrs( XW_DUtilCtxt* dutil, XWEnv xwe, const CurGameInfo* gi, releaseState( dutil, xwe, state ); } - LOG_RETURNF( "%s", boolToStr(canUse) ); + XP_LOGFFV( "=>%s", boolToStr(canUse) ); return canUse; }