relay tracks variantCode int, not string

This commit is contained in:
Eric House 2019-03-07 18:12:26 -08:00
parent 6bc65476d0
commit 8456b9fd76
7 changed files with 36 additions and 33 deletions

View file

@ -1031,7 +1031,7 @@ public class RelayService extends XWJIService
writeVLIString( out, BuildConfig.GIT_REV ); writeVLIString( out, BuildConfig.GIT_REV );
writeVLIString( out, Build.MODEL ); writeVLIString( out, Build.MODEL );
writeVLIString( out, Build.VERSION.RELEASE ); writeVLIString( out, Build.VERSION.RELEASE );
writeVLIString( out, BuildConfig.VARIANT_NAME ); writeShort( out, BuildConfig.VARIANT_CODE );
postPacket( bas, XWRelayReg.XWPDEV_REG, timestamp ); postPacket( bas, XWRelayReg.XWPDEV_REG, timestamp );
s_regStartTime = now; s_regStartTime = now;

View file

@ -32,6 +32,8 @@
#define MAX_MOVE_CHECK_MS ((XP_U16)(1000 * 60 * 60 * 24)) #define MAX_MOVE_CHECK_MS ((XP_U16)(1000 * 60 * 60 * 24))
#define RELAY_API_PROTO "http" #define RELAY_API_PROTO "http"
#define CLIENT_VARIANT_CODE 1000
typedef struct _RelayConStorage { typedef struct _RelayConStorage {
pthread_t mainThread; pthread_t mainThread;
guint moveCheckerID; guint moveCheckerID;
@ -305,7 +307,7 @@ relaycon_reg( LaunchParams* params, const XP_UCHAR* rDevID,
indx += addVLIStr( &tmpbuf[indx], sizeof(tmpbuf) - indx, SVN_REV ); indx += addVLIStr( &tmpbuf[indx], sizeof(tmpbuf) - indx, SVN_REV );
indx += addVLIStr( &tmpbuf[indx], sizeof(tmpbuf) - indx, "linux box" ); indx += addVLIStr( &tmpbuf[indx], sizeof(tmpbuf) - indx, "linux box" );
indx += addVLIStr( &tmpbuf[indx], sizeof(tmpbuf) - indx, "linux version" ); indx += addVLIStr( &tmpbuf[indx], sizeof(tmpbuf) - indx, "linux version" );
indx += addVLIStr( &tmpbuf[indx], sizeof(tmpbuf) - indx, "linux variant" ); indx += writeShort( &tmpbuf[indx], sizeof(tmpbuf) - indx, CLIENT_VARIANT_CODE );
sendIt( storage, tmpbuf, indx, 0.5 ); sendIt( storage, tmpbuf, indx, 0.5 );
} }

View file

@ -276,7 +276,7 @@ DBMgr::FindRelayIDFor( const char* connName, HostID hid,
if ( found ) { if ( found ) {
devID = (DevIDRelay)strtoul( PQgetvalue( result, 0, 0 ), NULL, 10 ); devID = (DevIDRelay)strtoul( PQgetvalue( result, 0, 0 ), NULL, 10 );
*devIDP = devID; *devIDP = devID;
ReregisterDevice( devID, host, NULL, 0, NULL, NULL, NULL ); ReregisterDevice( devID, host, NULL, 0, NULL, NULL, 0);
} }
PQclear( result ); PQclear( result );
if ( !found ) { if ( !found ) {
@ -390,7 +390,7 @@ DBMgr::AllDevsAckd( const char* const connName )
DevIDRelay DevIDRelay
DBMgr::RegisterDevice( const DevID* host, int clientVersion, DBMgr::RegisterDevice( const DevID* host, int clientVersion,
const char* const desc, const char* const model, const char* const desc, const char* const model,
const char* const osVers, const char* const variant ) const char* const osVers, unsigned short variantCode )
{ {
DevIDRelay devID; DevIDRelay devID;
assert( host->m_devIDType != ID_TYPE_NONE ); assert( host->m_devIDType != ID_TYPE_NONE );
@ -418,7 +418,7 @@ DBMgr::RegisterDevice( const DevID* host, int clientVersion,
QueryBuilder qb; QueryBuilder qb;
qb.appendQueryf( "INSERT INTO " DEVICES_TABLE " (id, devTypes[1]," qb.appendQueryf( "INSERT INTO " DEVICES_TABLE " (id, devTypes[1],"
" devids[1], clntVers, versdesc, model, osvers, variant)" " devids[1], clntVers, versdesc, model, osvers, variantCode)"
" VALUES($$, $$, $$, $$, $$, $$, $$, $$)" ) " VALUES($$, $$, $$, $$, $$, $$, $$, $$)" )
.appendParam( devID ) .appendParam( devID )
@ -428,7 +428,7 @@ DBMgr::RegisterDevice( const DevID* host, int clientVersion,
.appendParam( desc ) .appendParam( desc )
.appendParam( model ) .appendParam( model )
.appendParam( osVers ) .appendParam( osVers )
.appendParam( variant ) .appendParam( variantCode )
.finish(); .finish();
success = execParams( qb ); success = execParams( qb );
@ -440,14 +440,14 @@ DBMgr::RegisterDevice( const DevID* host, int clientVersion,
DevIDRelay DevIDRelay
DBMgr::RegisterDevice( const DevID* host ) DBMgr::RegisterDevice( const DevID* host )
{ {
return RegisterDevice( host, 0, NULL, NULL, NULL, NULL ); return RegisterDevice( host, 0, NULL, NULL, NULL, 0);
} }
void void
DBMgr::ReregisterDevice( DevIDRelay relayID, const DevID* host, DBMgr::ReregisterDevice( DevIDRelay relayID, const DevID* host,
const char* const desc, int clientVersion, const char* const desc, int clientVersion,
const char* const model, const char* const osVers, const char* const model, const char* const osVers,
const char* const variant ) unsigned short variantCode )
{ {
QueryBuilder qb; QueryBuilder qb;
qb.appendQueryf( "UPDATE " DEVICES_TABLE " SET " qb.appendQueryf( "UPDATE " DEVICES_TABLE " SET "
@ -456,7 +456,7 @@ DBMgr::ReregisterDevice( DevIDRelay relayID, const DevID* host,
.appendParam( host->m_devIDType ) .appendParam( host->m_devIDType )
.appendParam( host->m_devIDString.c_str() ); .appendParam( host->m_devIDString.c_str() );
formatUpdate( qb, true, desc, clientVersion, model, osVers, variant, formatUpdate( qb, true, desc, clientVersion, model, osVers, variantCode,
relayID ); relayID );
qb.finish(); qb.finish();
execParams( qb ); execParams( qb );
@ -466,7 +466,7 @@ DBMgr::ReregisterDevice( DevIDRelay relayID, const DevID* host,
bool bool
DBMgr::UpdateDevice( DevIDRelay relayID, const char* const desc, DBMgr::UpdateDevice( DevIDRelay relayID, const char* const desc,
int clientVersion, const char* const model, int clientVersion, const char* const model,
const char* const osVers, const char* const variant, const char* const osVers, unsigned short variantCode,
bool check ) bool check )
{ {
bool exists = !check; bool exists = !check;
@ -480,7 +480,7 @@ DBMgr::UpdateDevice( DevIDRelay relayID, const char* const desc,
QueryBuilder qb; QueryBuilder qb;
qb.appendQueryf( "UPDATE " DEVICES_TABLE " SET " ); qb.appendQueryf( "UPDATE " DEVICES_TABLE " SET " );
formatUpdate( qb, false, desc, clientVersion, model, osVers, formatUpdate( qb, false, desc, clientVersion, model, osVers,
variant, relayID ); variantCode, relayID );
qb.finish(); qb.finish();
execParams( qb ); execParams( qb );
} }
@ -490,14 +490,14 @@ DBMgr::UpdateDevice( DevIDRelay relayID, const char* const desc,
bool bool
DBMgr::UpdateDevice( DevIDRelay relayID ) DBMgr::UpdateDevice( DevIDRelay relayID )
{ {
return UpdateDevice( relayID, NULL, 0, NULL, NULL, NULL, false ); return UpdateDevice( relayID, NULL, 0, NULL, NULL, 0, false );
} }
void void
DBMgr::formatUpdate( QueryBuilder& qb, DBMgr::formatUpdate( QueryBuilder& qb,
bool append, const char* const desc, bool append, const char* const desc,
int clientVersion, const char* const model, int clientVersion, const char* const model,
const char* const osVers, const char* const variant, const char* const osVers, unsigned short variantCode,
DevIDRelay relayID ) DevIDRelay relayID )
{ {
qb.appendQueryf( "mtimes[1]='now'" ); qb.appendQueryf( "mtimes[1]='now'" );
@ -516,10 +516,8 @@ DBMgr::formatUpdate( QueryBuilder& qb,
qb.appendQueryf( ", osvers=$$" ) qb.appendQueryf( ", osvers=$$" )
.appendParam( osVers ); .appendParam( osVers );
} }
if ( NULL != variant && '\0' != variant[0] ) { qb.appendQueryf( ", variantCode=$$" ).appendParam( variantCode );
qb.appendQueryf( ", variant=$$" )
.appendParam( variant );
}
qb.appendQueryf( " WHERE id = $$" ) qb.appendQueryf( " WHERE id = $$" )
.appendParam( relayID ); .appendParam( relayID );
} }

View file

@ -101,14 +101,15 @@ class DBMgr {
DevIDRelay RegisterDevice( const DevID* host ); DevIDRelay RegisterDevice( const DevID* host );
DevIDRelay RegisterDevice( const DevID* host, int clientVersion, DevIDRelay RegisterDevice( const DevID* host, int clientVersion,
const char* const desc, const char* const model, const char* const desc, const char* const model,
const char* const osVers, const char* const variant ); const char* const osVers,
unsigned short variantCode );
void ReregisterDevice( DevIDRelay relayID, const DevID* host, void ReregisterDevice( DevIDRelay relayID, const DevID* host,
const char* const desc, int clientVersion, const char* const desc, int clientVersion,
const char* const model, const char* const osVers, const char* const model, const char* const osVers,
const char* const variant ); unsigned short variantCode );
bool UpdateDevice( DevIDRelay relayID, const char* const desc, bool UpdateDevice( DevIDRelay relayID, const char* const desc,
int clientVersion, const char* const model, int clientVersion, const char* const model,
const char* const osVers, const char* const variant, const char* const osVers, unsigned short variantCode,
bool check ); bool check );
HostID AddToGame( const char* const connName, HostID curID, int clientVersion, HostID AddToGame( const char* const connName, HostID curID, int clientVersion,
@ -176,10 +177,9 @@ class DBMgr {
bool UpdateDevice( DevIDRelay relayID ); bool UpdateDevice( DevIDRelay relayID );
void formatUpdate( QueryBuilder& qb, bool append, const char* const desc, void formatUpdate( QueryBuilder& qb, bool append, const char* const desc,
int clientVersion, const char* const model, int clientVersion, const char* const model,
const char* const osVers, const char* const variant, const char* const osVers, unsigned short variantCode,
DevIDRelay relayID ); DevIDRelay relayID );
PGconn* getThreadConn( void ); PGconn* getThreadConn( void );
void clearThreadConn(); void clearThreadConn();

View file

@ -67,7 +67,7 @@ echo "SELECT id,connName,hid as h,token,ctime,stime,devid as dest,msg64 "\
| psql xwgames | psql xwgames
# Devices # Devices
LINE="SELECT id, model, variant as var, osvers, array_length(mtimes, 1) as mcnt, mtimes[1] as mtime, array_length(devTypes, 1) as dcnt, devTypes as dTyps, devids[1] as devid_1 FROM devices " LINE="SELECT id, model, variantCode as var, osvers, array_length(mtimes, 1) as mcnt, mtimes[1] as mtime, array_length(devTypes, 1) as dcnt, devTypes as dTyps, devids[1] as devid_1 FROM devices "
if [ -n "$FILTER_DEVS" ]; then if [ -n "$FILTER_DEVS" ]; then
LINE="${LINE} WHERE id IN (select UNNEST(devids) FROM games $QUERY)" LINE="${LINE} WHERE id IN (select UNNEST(devids) FROM games $QUERY)"
fi fi

View file

@ -1599,7 +1599,7 @@ static void
registerDevice( const string& relayIDStr, const DevID* devID, registerDevice( const string& relayIDStr, const DevID* devID,
const AddrInfo* addr, int clientVers, const string& devDesc, const AddrInfo* addr, int clientVers, const string& devDesc,
const string& model, const string& osVers, const string& model, const string& osVers,
const string& variant ) unsigned short variantCode )
{ {
DevIDRelay relayID = DBMgr::DEVID_NONE; DevIDRelay relayID = DBMgr::DEVID_NONE;
DBMgr* dbMgr = DBMgr::Get(); DBMgr* dbMgr = DBMgr::Get();
@ -1611,16 +1611,16 @@ registerDevice( const string& relayIDStr, const DevID* devID,
if ( DBMgr::DEVID_NONE == relayID ) { // new device if ( DBMgr::DEVID_NONE == relayID ) { // new device
relayID = dbMgr->RegisterDevice( devID, clientVers, devDesc.c_str(), relayID = dbMgr->RegisterDevice( devID, clientVers, devDesc.c_str(),
model.c_str(), osVers.c_str(), variant.c_str() ); model.c_str(), osVers.c_str(), variantCode );
} else if ( ID_TYPE_RELAY < devID->m_devIDType ) { // re-registering } else if ( ID_TYPE_RELAY < devID->m_devIDType ) { // re-registering
dbMgr->ReregisterDevice( relayID, devID, devDesc.c_str(), clientVers, dbMgr->ReregisterDevice( relayID, devID, devDesc.c_str(), clientVers,
model.c_str(), osVers.c_str(), variant.c_str() ); model.c_str(), osVers.c_str(), variantCode );
checkMsgs = true; checkMsgs = true;
} else { } else {
// No new information; just update the time // No new information; just update the time
checkMsgs = dbMgr->UpdateDevice( relayID, devDesc.c_str(), clientVers, checkMsgs = dbMgr->UpdateDevice( relayID, devDesc.c_str(), clientVers,
model.c_str(), osVers.c_str(), variant.c_str(), model.c_str(), osVers.c_str(),
true ); variantCode, true );
if ( !checkMsgs ) { if ( !checkMsgs ) {
uint8_t buf[32]; uint8_t buf[32];
int indx = addRegID( &buf[0], relayID ); int indx = addRegID( &buf[0], relayID );
@ -1772,13 +1772,16 @@ handle_udp_packet( PacketThreadClosure* ptc )
if ( 3 >= clientVers ) { if ( 3 >= clientVers ) {
checkAllAscii( model, "bad model" ); checkAllAscii( model, "bad model" );
} }
string variant;
if ( getVLIString( &ptr, end, variant ) ) { unsigned short variantCode = 0;
logf( XW_LOGINFO, "%s(): got variant %s", __func__, variant.c_str() ); if ( getNetShort( &ptr, end, &variantCode ) ) {
logf( XW_LOGINFO, "%s(): got variantCode %d", __func__,
variantCode );
} }
registerDevice( relayID, &devID, ptc->addr(), registerDevice( relayID, &devID, ptc->addr(),
clientVers, devDesc, model, osVers, variant ); clientVers, devDesc, model, osVers,
variantCode );
} }
} }
} }

View file

@ -87,7 +87,7 @@ id INTEGER UNIQUE PRIMARY KEY
,versDesc TEXT ,versDesc TEXT
,model TEXT ,model TEXT
,osvers TEXT ,osvers TEXT
,variant TEXT ,variantCode INTEGER DEFAULT 0
,ctime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,ctime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
,mtimes TIMESTAMP[] ,mtimes TIMESTAMP[]
,unreg BOOLEAN DEFAULT FALSE ,unreg BOOLEAN DEFAULT FALSE