mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-02-13 20:48:02 +01:00
preserve most recent maxInterval rather than counting on getting it
from relay.
This commit is contained in:
parent
d9bfc01e35
commit
7b9f6adf6d
2 changed files with 25 additions and 5 deletions
|
@ -76,6 +76,7 @@
|
||||||
<string name="key_default_group">key_default_group</string>
|
<string name="key_default_group">key_default_group</string>
|
||||||
<string name="key_group_posns">key_group_posns</string>
|
<string name="key_group_posns">key_group_posns</string>
|
||||||
<string name="key_last_packet">key_last_packet</string>
|
<string name="key_last_packet">key_last_packet</string>
|
||||||
|
<string name="key_udp_interval">key_udp_interval</string>
|
||||||
|
|
||||||
<string name="key_notagain_sync">key_notagain_sync</string>
|
<string name="key_notagain_sync">key_notagain_sync</string>
|
||||||
<string name="key_notagain_chat">key_notagain_chat</string>
|
<string name="key_notagain_chat">key_notagain_chat</string>
|
||||||
|
|
|
@ -90,7 +90,7 @@ public class RelayService extends XWService
|
||||||
new LinkedBlockingQueue<DatagramPacket>();
|
new LinkedBlockingQueue<DatagramPacket>();
|
||||||
private Handler m_handler;
|
private Handler m_handler;
|
||||||
private Runnable m_onInactivity;
|
private Runnable m_onInactivity;
|
||||||
private short m_maxIntervalSeconds = 5; // give time to get real value
|
private int m_maxIntervalSeconds = 0;
|
||||||
private long m_lastGamePacketReceived;
|
private long m_lastGamePacketReceived;
|
||||||
|
|
||||||
// These must match the enum XWPDevProto in xwrelay.h
|
// These must match the enum XWPDevProto in xwrelay.h
|
||||||
|
@ -306,7 +306,7 @@ public class RelayService extends XWService
|
||||||
m_lastGamePacketReceived );
|
m_lastGamePacketReceived );
|
||||||
|
|
||||||
if ( shouldMaintainConnection() ) {
|
if ( shouldMaintainConnection() ) {
|
||||||
long interval_millis = m_maxIntervalSeconds * 1000;
|
long interval_millis = getMaxIntervalSeconds() * 1000;
|
||||||
RelayReceiver.RestartTimer( this, interval_millis );
|
RelayReceiver.RestartTimer( this, interval_millis );
|
||||||
}
|
}
|
||||||
stopThreads();
|
stopThreads();
|
||||||
|
@ -543,9 +543,10 @@ public class RelayService extends XWService
|
||||||
break;
|
break;
|
||||||
case XWPDEV_REGRSP:
|
case XWPDEV_REGRSP:
|
||||||
str = getVLIString( dis );
|
str = getVLIString( dis );
|
||||||
m_maxIntervalSeconds = dis.readShort();
|
short maxIntervalSeconds = dis.readShort();
|
||||||
DbgUtils.logf( "got relayid %s, maxInterval %d", str,
|
DbgUtils.logf( "got relayid %s, maxInterval %d", str,
|
||||||
m_maxIntervalSeconds );
|
maxIntervalSeconds );
|
||||||
|
setMaxIntervalSeconds( maxIntervalSeconds );
|
||||||
XWPrefs.setRelayDevID( this, str );
|
XWPrefs.setRelayDevID( this, str );
|
||||||
break;
|
break;
|
||||||
case XWPDEV_HAVEMSGS:
|
case XWPDEV_HAVEMSGS:
|
||||||
|
@ -984,7 +985,7 @@ public class RelayService extends XWService
|
||||||
// UDP socket's no good as a return address after several
|
// UDP socket's no good as a return address after several
|
||||||
// minutes of inactivity, so do something after that time.
|
// minutes of inactivity, so do something after that time.
|
||||||
m_handler.postDelayed( m_onInactivity,
|
m_handler.postDelayed( m_onInactivity,
|
||||||
m_maxIntervalSeconds * 1000 );
|
getMaxIntervalSeconds() * 1000 );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startThreads()
|
private void startThreads()
|
||||||
|
@ -1057,6 +1058,24 @@ public class RelayService extends XWService
|
||||||
os.writeBytes( str );
|
os.writeBytes( str );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setMaxIntervalSeconds( int maxIntervalSeconds )
|
||||||
|
{
|
||||||
|
if ( m_maxIntervalSeconds != maxIntervalSeconds ) {
|
||||||
|
m_maxIntervalSeconds = maxIntervalSeconds;
|
||||||
|
XWPrefs.setPrefsInt( this, R.string.key_udp_interval,
|
||||||
|
maxIntervalSeconds );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getMaxIntervalSeconds()
|
||||||
|
{
|
||||||
|
if ( 0 == m_maxIntervalSeconds ) {
|
||||||
|
m_maxIntervalSeconds =
|
||||||
|
XWPrefs.getPrefsInt( this, R.string.key_udp_interval, 60 );
|
||||||
|
}
|
||||||
|
return m_maxIntervalSeconds;
|
||||||
|
}
|
||||||
|
|
||||||
/* Timers:
|
/* Timers:
|
||||||
*
|
*
|
||||||
* Two goals: simulate the GCM experience for those who don't have
|
* Two goals: simulate the GCM experience for those who don't have
|
||||||
|
|
Loading…
Add table
Reference in a new issue