mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-15 15:41:24 +01:00
add new booleans to relay address record around public rooms
This commit is contained in:
parent
e20c63f38c
commit
b742c7dbb7
3 changed files with 27 additions and 3 deletions
|
@ -179,7 +179,6 @@ setObject( JNIEnv* env, jobject obj, const char* name, const char* sig,
|
|||
(*env)->DeleteLocalRef( env, cls );
|
||||
}
|
||||
|
||||
/* return false on failure, e.g. exception raised */
|
||||
bool
|
||||
getBool( JNIEnv* env, jobject obj, const char* name )
|
||||
{
|
||||
|
@ -313,6 +312,10 @@ setJAddrRec( JNIEnv* env, jobject jaddr, const CommsAddrRec* addr )
|
|||
setInt( env, jaddr, "ip_relay_port", addr->u.ip_relay.port );
|
||||
setString( env, jaddr, "ip_relay_hostName", addr->u.ip_relay.hostName );
|
||||
setString( env, jaddr, "ip_relay_invite", addr->u.ip_relay.invite );
|
||||
setBool( env, jaddr, "ip_relay_seeksPublicRoom",
|
||||
addr->u.ip_relay.seeksPublicRoom );
|
||||
setBool( env, jaddr, "ip_relay_advertiseRoom",
|
||||
addr->u.ip_relay.advertiseRoom );
|
||||
break;
|
||||
case COMMS_CONN_SMS:
|
||||
setString( env, jaddr, "sms_phone", addr->u.sms.phone );
|
||||
|
@ -341,6 +344,11 @@ getJAddrRec( JNIEnv* env, CommsAddrRec* addr, jobject jaddr )
|
|||
VSIZE(addr->u.ip_relay.hostName) );
|
||||
getString( env, jaddr, "ip_relay_invite", addr->u.ip_relay.invite,
|
||||
VSIZE(addr->u.ip_relay.invite) );
|
||||
addr->u.ip_relay.seeksPublicRoom =
|
||||
getBool( env, jaddr, "ip_relay_seeksPublicRoom" );
|
||||
addr->u.ip_relay.advertiseRoom =
|
||||
getBool( env, jaddr, "ip_relay_advertiseRoom" );
|
||||
|
||||
break;
|
||||
case COMMS_CONN_SMS:
|
||||
getString( env, jaddr, "sms_phone", addr->u.sms.phone,
|
||||
|
|
|
@ -431,6 +431,10 @@ addrFromStream( CommsAddrRec* addrP, XWStreamCtxt* stream )
|
|||
sizeof(addr.u.ip_relay.hostName) );
|
||||
addr.u.ip_relay.ipAddr = stream_getU32( stream );
|
||||
addr.u.ip_relay.port = stream_getU16( stream );
|
||||
if ( stream_getVersion( stream ) >= STREAM_VERS_DICTLANG ) {
|
||||
addr.u.ip_relay.seeksPublicRoom = stream_getBits( stream, 1 );
|
||||
addr.u.ip_relay.advertiseRoom = stream_getBits( stream, 1 );
|
||||
}
|
||||
break;
|
||||
case COMMS_CONN_SMS:
|
||||
stringFromStreamHere( stream, addr.u.sms.phone,
|
||||
|
@ -605,8 +609,8 @@ static void
|
|||
addrToStream( XWStreamCtxt* stream, const CommsAddrRec* addrP )
|
||||
{
|
||||
CommsAddrRec addr;
|
||||
XP_MEMCPY( &addr, addrP, sizeof(addr) );
|
||||
|
||||
XP_MEMCPY( &addr, addrP, sizeof(addr) ); /* does this really speed things
|
||||
or reduce code size? */
|
||||
stream_putU8( stream, addr.conType );
|
||||
|
||||
switch( addr.conType ) {
|
||||
|
@ -632,6 +636,8 @@ addrToStream( XWStreamCtxt* stream, const CommsAddrRec* addrP )
|
|||
stringToStream( stream, addr.u.ip_relay.hostName );
|
||||
stream_putU32( stream, addr.u.ip_relay.ipAddr );
|
||||
stream_putU16( stream, addr.u.ip_relay.port );
|
||||
stream_putBits( stream, 1, addr.u.ip_relay.seeksPublicRoom );
|
||||
stream_putBits( stream, 1, addr.u.ip_relay.advertiseRoom );
|
||||
break;
|
||||
case COMMS_CONN_SMS:
|
||||
stringToStream( stream, addr.u.sms.phone );
|
||||
|
@ -715,6 +721,8 @@ comms_getAddr( const CommsCtxt* comms, CommsAddrRec* addr )
|
|||
void
|
||||
comms_setAddr( CommsCtxt* comms, const CommsAddrRec* addr )
|
||||
{
|
||||
XP_LOGF( "%s: seeksPublicRoom: %d", __func__,
|
||||
addr->u.ip_relay.seeksPublicRoom );
|
||||
XP_ASSERT( comms != NULL );
|
||||
util_addrChange( comms->util, &comms->addr, addr );
|
||||
XP_MEMCPY( &comms->addr, addr, sizeof(comms->addr) );
|
||||
|
@ -1857,6 +1865,8 @@ send_via_relay( CommsCtxt* comms, XWRELAY_Cmd cmd, XWHostID destID,
|
|||
case XWRELAY_GAME_RECONNECT:
|
||||
stream_putU8( tmpStream, XWRELAY_PROTO_VERSION );
|
||||
stringToStream( tmpStream, addr.u.ip_relay.invite );
|
||||
stream_putU8( tmpStream, addr.u.ip_relay.seeksPublicRoom );
|
||||
stream_putU8( tmpStream, addr.u.ip_relay.advertiseRoom );
|
||||
stream_putU8( tmpStream, comms->r.myHostID );
|
||||
XP_ASSERT( cmd == XWRELAY_GAME_RECONNECT
|
||||
|| comms->r.myHostID == HOST_ID_NONE
|
||||
|
@ -1866,6 +1876,10 @@ send_via_relay( CommsCtxt* comms, XWRELAY_Cmd cmd, XWHostID destID,
|
|||
stream_putU16( tmpStream, getChannelSeed(comms) );
|
||||
if ( XWRELAY_GAME_RECONNECT == cmd ) {
|
||||
stringToStream( tmpStream, comms->r.connName );
|
||||
} else {
|
||||
const CurGameInfo* gameInfo = comms->util->gameInfo;
|
||||
stream_putU8( tmpStream, gameInfo->dictLang );
|
||||
XP_LOGF( "%s: langCode=%d", __func__, gameInfo->dictLang );
|
||||
}
|
||||
set_relay_state( comms, COMMS_RELAYSTATE_CONNECT_PENDING );
|
||||
break;
|
||||
|
|
|
@ -91,6 +91,8 @@ typedef struct CommsAddrRec {
|
|||
XP_UCHAR hostName[MAX_HOSTNAME_LEN + 1];
|
||||
XP_U32 ipAddr; /* looked up from above */
|
||||
XP_U16 port;
|
||||
XP_Bool seeksPublicRoom;
|
||||
XP_Bool advertiseRoom;
|
||||
} ip_relay;
|
||||
struct {
|
||||
/* nothing? */
|
||||
|
|
Loading…
Reference in a new issue