mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-01 06:19:57 +01:00
rename class and pass in from higher so send can be done in the right
place.
This commit is contained in:
parent
985f254660
commit
6f22cbd8c9
3 changed files with 38 additions and 35 deletions
|
@ -851,7 +851,7 @@ public class GameUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean feedMessages( Context context, String relayID,
|
public static boolean feedMessages( Context context, String relayID,
|
||||||
byte[][] msgs )
|
byte[][] msgs, RelayMsgSink sink )
|
||||||
{
|
{
|
||||||
boolean draw = false;
|
boolean draw = false;
|
||||||
long rowid = DBUtils.getRowIDFor( context, relayID );
|
long rowid = DBUtils.getRowIDFor( context, relayID );
|
||||||
|
@ -859,10 +859,9 @@ public class GameUtils {
|
||||||
int gamePtr = XwJNI.initJNI();
|
int gamePtr = XwJNI.initJNI();
|
||||||
CurGameInfo gi = new CurGameInfo( context );
|
CurGameInfo gi = new CurGameInfo( context );
|
||||||
FeedUtilsImpl feedImpl = new FeedUtilsImpl( context, rowid );
|
FeedUtilsImpl feedImpl = new FeedUtilsImpl( context, rowid );
|
||||||
CommsTransportStub xpstub = new CommsTransportStub();
|
|
||||||
GameLock lock = new GameLock( rowid, true );
|
GameLock lock = new GameLock( rowid, true );
|
||||||
if ( lock.tryLock() ) {
|
if ( lock.tryLock() ) {
|
||||||
loadMakeGame( context, gamePtr, gi, feedImpl, xpstub, lock );
|
loadMakeGame( context, gamePtr, gi, feedImpl, sink, lock );
|
||||||
|
|
||||||
for ( byte[] msg : msgs ) {
|
for ( byte[] msg : msgs ) {
|
||||||
draw = XwJNI.game_receiveMessage( gamePtr, msg ) || draw;
|
draw = XwJNI.game_receiveMessage( gamePtr, msg ) || draw;
|
||||||
|
|
|
@ -24,7 +24,7 @@ import junit.framework.Assert;
|
||||||
|
|
||||||
import org.eehouse.android.xw4.jni.*;
|
import org.eehouse.android.xw4.jni.*;
|
||||||
|
|
||||||
public class CommsTransportStub implements TransportProcs {
|
public class RelayMsgSink implements TransportProcs {
|
||||||
|
|
||||||
public int transportSend( byte[] buf, final CommsAddrRec addr )
|
public int transportSend( byte[] buf, final CommsAddrRec addr )
|
||||||
{
|
{
|
|
@ -48,37 +48,7 @@ public class RelayService extends Service {
|
||||||
|
|
||||||
Thread thread = new Thread( null, new Runnable() {
|
Thread thread = new Thread( null, new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
int[] nBytes = new int[1];
|
fetchAndProcess();
|
||||||
String[] ids = collectIDs( nBytes );
|
|
||||||
if ( null != ids && 0 < ids.length ) {
|
|
||||||
byte[][][] msgs =
|
|
||||||
NetUtils.queryRelay( RelayService.this,
|
|
||||||
ids, nBytes[0] );
|
|
||||||
|
|
||||||
int nameCount = ids.length;
|
|
||||||
if ( null != msgs ) {
|
|
||||||
ArrayList<String> idsWMsgs =
|
|
||||||
new ArrayList<String>( nameCount );
|
|
||||||
for ( int ii = 0; ii < nameCount; ++ii ) {
|
|
||||||
// if game has messages, open it and feed 'em
|
|
||||||
// to it.
|
|
||||||
if ( null != msgs[ii] ) {
|
|
||||||
if ( GameUtils.feedMessages( RelayService.this,
|
|
||||||
ids[ii],
|
|
||||||
msgs[ii] ) ) {
|
|
||||||
idsWMsgs.add( ids[ii] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( 0 < idsWMsgs.size() ) {
|
|
||||||
String[] relayIDs = new String[idsWMsgs.size()];
|
|
||||||
idsWMsgs.toArray( relayIDs );
|
|
||||||
if ( !DispatchNotify.tryHandle( relayIDs ) ) {
|
|
||||||
setupNotification( relayIDs );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
RelayService.this.stopSelf();
|
RelayService.this.stopSelf();
|
||||||
}
|
}
|
||||||
}, getClass().getName() );
|
}, getClass().getName() );
|
||||||
|
@ -134,5 +104,39 @@ public class RelayService extends Service {
|
||||||
nBytes[0] = len;
|
nBytes[0] = len;
|
||||||
return ids;
|
return ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void fetchAndProcess()
|
||||||
|
{
|
||||||
|
int[] nBytes = new int[1];
|
||||||
|
String[] ids = collectIDs( nBytes );
|
||||||
|
if ( null != ids && 0 < ids.length ) {
|
||||||
|
RelayMsgSink sink = new RelayMsgSink();
|
||||||
|
byte[][][] msgs =
|
||||||
|
NetUtils.queryRelay( this, ids, nBytes[0] );
|
||||||
|
|
||||||
|
int nameCount = ids.length;
|
||||||
|
if ( null != msgs ) {
|
||||||
|
ArrayList<String> idsWMsgs =
|
||||||
|
new ArrayList<String>( nameCount );
|
||||||
|
for ( int ii = 0; ii < nameCount; ++ii ) {
|
||||||
|
// if game has messages, open it and feed 'em
|
||||||
|
// to it.
|
||||||
|
if ( null != msgs[ii] ) {
|
||||||
|
if ( GameUtils.feedMessages( this, ids[ii],
|
||||||
|
msgs[ii], sink ) ) {
|
||||||
|
idsWMsgs.add( ids[ii] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( 0 < idsWMsgs.size() ) {
|
||||||
|
String[] relayIDs = new String[idsWMsgs.size()];
|
||||||
|
idsWMsgs.toArray( relayIDs );
|
||||||
|
if ( !DispatchNotify.tryHandle( relayIDs ) ) {
|
||||||
|
setupNotification( relayIDs );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue