Eric House
8e616095ad
add a bit more logging of channelNos
2014-11-06 20:28:51 -08:00
Eric House
70f4541bbe
Merge branch 'android_branch' into android_multi2
...
Conflicts:
xwords4/common/comms.c
2014-11-06 20:09:20 -08:00
Eric House
a34a859d18
log channelNo more consistently
2014-11-06 18:44:19 -08:00
Eric House
540d3e9622
wire disabling checkboxes into comms. They work -- and show that
...
multi-addressing needs debugging still.
2014-11-06 06:35:28 -08:00
Eric House
b1de8663d6
fix to compile with DEBUG undefined
2014-11-06 06:32:00 -08:00
Eric House
2426e04a70
fix overwriting of address info so that, AFAICT, both address types
...
are successfully being used through much of a test game.
2014-11-05 21:57:25 -08:00
Eric House
8aae7ae10a
fix crash: don't use comms before initialized
2014-11-05 07:49:17 -08:00
Eric House
17bc0ab47c
snapshot of work toward communicating when two addresses are in use.
...
An invitation works with relay and (fake) SMS on, and the invited
client connects successfully using both (the second to arrive being
correctly identified as a dupe.) While the game can be played after,
only SMS messages are being received. And opening a saved game
crashes.
2014-11-05 07:41:20 -08:00
Eric House
e1a10508e1
when preprocessing a message, limit search to the address type of the
...
channel it came in on if known.
2014-11-02 17:24:37 -08:00
Eric House
b624867cb4
add addr_rmType()
2014-10-28 08:03:19 -07:00
Eric House
93f0b626af
snapshot: invite sent by NFC connects two devices using relay with BT
...
ability passed too (though not yet used.)
2014-10-27 07:51:25 -07:00
Eric House
878a16b3bc
snapshot: android compiles, and works well enough to exchange moves
...
via relay! Lots of changes, mostly around treating connTypes as a Set
inside the java world. Jni to translate to that is a pain.
2014-10-16 06:45:24 -07:00
Eric House
fe4c7b52f2
snapshot: relay test script works with a second address type set
...
(though with its actual transport stubbed out). Android doesn't even
compile.
2014-10-15 07:26:18 -07:00
Eric House
93526d38d7
cleanup (version upgrade test works)
2014-09-25 22:24:09 -07:00
Eric House
43bd3c018a
make an addr's conType a bitfield rather than holding a single value.
...
Works for large numbers of relay games in test, but will not yet
actually hold more than one value. Should be safe to merge to main
branch once stream upgrade is verified.
2014-09-25 20:05:37 -07:00
Eric House
4d2f49d33f
when sending and don't have an address for channel yet, send the one
...
comms was created with, which is what client will have to do anyway.
2014-09-14 13:41:12 -07:00
Eric House
23b72467bb
don't assert unset cookieID, as that's normal (I think) for unconnected case
2014-03-08 12:47:58 -08:00
Eric House
c1e22dd3cf
add summary DB column and jni code to fetch it to store and display number of unacked messages a game has. And add debug-only option to display it in the main list. In the future I want to be able to iterate over all these games and resend their packets (without opening them visually) when an internet connection comes back up.
2014-02-28 18:59:12 -08:00
Eric House
025bcb885b
don't move state forward when should be moving back
2014-02-09 19:35:17 -08:00
Eric House
0b132661ca
change struct name from r to rr for easier searching; no code change
2014-02-07 21:12:45 -08:00
Eric House
e34cc9007d
fix problems with opening and using wordlists on 64-bit linux by
...
making XP_U32 32 rather than 64 bits. Duh. Do same on Android jni just
in case.
2014-01-07 06:58:20 -08:00
Eric House
de41802f54
rename variable so I don't trip up again
2013-12-17 21:08:27 -08:00
Eric House
4420049bd0
remove duplicate lines (added by merge?)
2013-12-16 08:05:35 -08:00
Eric House
1f877c7567
remove logging
2013-07-29 07:29:01 -07:00
Eric House
a191c6fc2a
don't add chats to queue at len 64 rather than 128
2013-07-22 06:12:06 -07:00
Eric House
27d9f3de45
Don't enable chat when more than 128 messages are in queue to prevent
...
an extremely unlikely cause of stalls -- and make tests trip over full
queues less often.
2013-07-18 07:37:45 -07:00
Eric House
62dacb83d8
fix to compile when DEBUG not defined
2013-07-16 08:17:46 -07:00
Eric House
9e358ad413
don't insert a new message in queue if it's identical to the one
...
currently at the end. This mostly happens when devices are making
several initial client connection attempts before succeeding.
2013-07-12 07:34:12 -07:00
Eric House
a522266ce4
add message checksumming for android too by making it part of util
...
(compiled out by default)
2013-07-10 08:05:47 -07:00
Eric House
5462a05692
Merge branch 'gtk_multigame' into android_branch
2013-07-09 19:35:26 -07:00
Eric House
bf1cdf225c
print queue less frequently
2013-07-09 19:32:49 -07:00
Eric House
d50c808f96
Merge branch 'android_branch' into gtk_multigame
...
Conflicts:
xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java
xwords4/common/comms.c
xwords4/linux/cursesmain.c
xwords4/linux/cursesmain.h
xwords4/linux/gtkmain.c
xwords4/linux/gtkmain.h
xwords4/linux/linuxmain.c
xwords4/linux/main.h
xwords4/linux/scripts/discon_ok2.sh
xwords4/relay/xwrelay.cpp
(Note: The curses app crashes on exit with mempool assertions, but that's a problem before the merge.)
2013-07-09 07:18:00 -07:00
Eric House
a3de759d9e
fix to compile on Android when DEBUG set
2013-07-07 19:40:07 -07:00
Eric House
923d41e0ee
fix to compile when DEBUG not set
2013-07-07 13:17:26 -07:00
Eric House
bbac923f68
assert queueLen at the point where it'll be easier track why it's overgrowing
2013-07-05 21:32:41 -07:00
Eric House
7229535be7
insist on non-0 channel ID *net of mask*; don't send acks when we
...
don't have a connID yet, as this confuses the server. This fixes
assertions in testing that were pretty common when chat was enabled;
it may also fix the reported problem on Android that games get hosed
when people are using chat, as the server's response (without the
assert) was to add a new channel.
2013-07-03 07:39:05 -07:00
Eric House
858d00332a
when an initial message from a client arrives with channel already
...
set, drop it (after asserting in debug code.) I'm not yet sure why
this happens, but giving it a new channel is not the right move.
2013-07-02 18:49:48 -07:00
Eric House
1f63745e34
add more logging in search of channelNo bug
2013-07-01 07:54:38 -07:00
Eric House
c77021231c
print checksums of sent and received messages
2013-06-30 08:33:29 -07:00
Eric House
b31858ee5e
log rather than assert when hostid changes -- though I'm not seeing
...
this now that the relay doesn't send packets to the wrong device
2013-06-26 00:42:55 -07:00
Eric House
6d22c3ab86
tweak logging
2013-06-22 05:51:29 -07:00
Eric House
8e8b4755b3
bring in changes from gtk_multigame to remove assertion fail when
...
connname gets changed by relay due to failure to ack it (which happens
when a large number of games is being run in a test.)
2013-05-30 06:48:29 -07:00
Eric House
d78a4979da
HACK: if gi's notion of gameID is out of sync, force it in (logging
...
the fact). I'm not sure why but this is required sometimes on
Android.
2013-01-28 07:01:49 -08:00
Eric House
3be45a67f7
fix erroneous asserts: it's uncommon but ok for a device to get
...
assigne a second connname. (Cause: failure of relay to receive the
device's ACK.)
2013-01-26 18:56:53 -08:00
Eric House
c839db4a25
disconnect from relay no matter what the state
2013-01-22 06:12:55 -08:00
Eric House
f6e7ece578
add comms_stop() and an assert to make sure it's called. Explicit
...
stop and a message to the relay when using a UDP socket makes up for
there being no notification of connection closing.
2013-01-16 06:31:09 -08:00
Eric House
5463535265
don't increase backoff if there wasn't actually anything to send.
2012-11-14 05:42:47 -08:00
Eric House
c4df31892e
Fix occasional infinite loop of devices sending and receiving the same
...
message over and over when getting updated by GCM. The problem
occurred when one device had an un-ACKable initial message still in
its queue. I call resendAll a lot, which caused that message to get
resent to the other game which then replied without being able to ACK
it so it remained to be sent again. This would continue until users
moved forward in the game. The fix is to add a backoff timer to
resendAll() so that it can't loop. The timer is reset when an ackable
and new message is received, meaning there's been a change in what's
available to resend. And since users calling resendAll manually
expect it to do something, add a force param that ignores the backoff.
seems to fix the problem (but needs a lot of testing.)
2012-11-13 21:25:03 -08:00
Eric House
cf8d30ce5d
tweak logging; fix uninitialized debug-only variable
2012-11-13 21:18:52 -08:00
Eric House
57ea768aaf
refuse to send 0-length messages. That may happen only when the stupid
...
curses client calls server_initClientConnection over and over, but
reduces unnecessary messaging in that case at least.
2012-11-13 07:22:48 -08:00
Eric House
43b1e219f3
add a bit more logging to comms
2012-11-13 06:14:36 -08:00
Eric House
1316ae4b67
Fix relay devid protocol to deal with case where client submits a
...
ID_TYPE_RELAY id that's not in the devices table (as has happened when
a device switches relay URLs during testing, but might also happen if
I have to delete an entry from the devices table.) In that case,
return ID_TYPE_NONE to the client, which will be its clue to delete
its ID_TYPE_RELAY id and submit the platform-specific id again.
Note: android won't compile this revision thanks to util.h change
2012-11-10 15:05:44 -08:00
Eric House
f1ee77882b
Send devid with RECONN as well as CONN so games present when device
...
upgrades can also use GCM. Tested on relay but not device.
2012-11-09 06:54:12 -08:00
Eric House
9ad28908bb
assert enum within range
2012-11-06 07:07:14 -08:00
Eric House
59937b8514
modify how devids are handled on the relay and the protocol through
...
which they're communicated to the device. Device is expected to have
a platform-specific notion of ID which the relay stores in a new
devices table and indexes with a 32-bit number which is returned to
the device -- which is encouraged but not required to use it in lieu
of the longer ID in future communications. Modify linux client and
test script to use the relay-supplied id. Some of this is commented
out for now.
2012-11-03 10:58:01 -07:00
Eric House
3469975d2a
add, still disabled by compile-time flags, code to transmit device ID
...
(e.g. ID Android devices get via GCM) to relay and to associate it
there with messages that need to be delivered.
2012-10-30 07:01:47 -07:00
Eric House
6ddd4a61c1
fix compile errors (mostly unused variables) found by gcc on latest
...
Ubuntu (12.04).
2012-09-25 07:28:02 -07:00
Eric House
0ccc2331b5
address bug where message was getting ACK'd by a device that failed to
...
save what it had ACK'd leaving the game permanently broken. Do that
by adding a new method game_saveSucceeded() called after the client
claims to have committed bytes returned by game_writeToStream() to
disk. In that method comms updates the value it'll use in subseqent
ACKs.
2012-09-10 07:31:45 -07:00
Eric House
32e1530d3f
i => ii; no other change
2012-08-22 07:44:21 -07:00
Eric House
08f03af2cc
don't write gameID as 32 bits when it's bound for old-version client,
...
and assert based only on the lower 16 bits in case came from
old-version client. Fixes crashes testing mid-game upgrade from beta
43.
2012-05-07 07:02:43 -07:00
Eric House
033a69be8d
to make it easier to tell games apart, print the number[s] of the
...
remote device[s] as part of summary view and in game config screen
(read-only). Use same field in summaries table for remote phone
numbers and bt addresses.
2012-04-18 23:23:36 -07:00
Eric House
416a1054a7
Merge branch 'android_ack' into android_bt
...
Conflicts:
xwords4/common/comms.c
xwords4/common/comtypes.h
2012-04-13 20:57:35 -07:00
Eric House
f22d9530b1
track what's been ack'd, and add method to ack what hasn't been.
2012-04-13 20:21:59 -07:00
Eric House
404265565b
tighten definition of connected BT or SMS game
2012-04-12 22:14:13 -07:00
Eric House
ac06d730f8
fix so chat works on SMS (and BT, though untested)
2012-03-24 12:04:07 -07:00
Eric House
fe614e9efc
delegate phone number comparison to platform code which in Android
...
case has a method for it. strcmp is not enough.
2012-03-19 07:36:18 -07:00
Eric House
a2493ffa97
Merge branch 'android_branch' into android_bt
2012-03-06 07:47:05 -08:00
Eric House
24ac205917
cleanup -- no behavior change
2012-03-06 06:23:04 -08:00
Eric House
9a2b488183
Merge branch 'android_branch' into android_bt
2012-02-14 16:56:20 -08:00
Eric House
914fa857be
return COMMS_CONN_NONE as address type of null comms rather than asserting.
2012-02-14 16:54:19 -08:00
Eric House
7214b7e12a
turn off the palmos-era bt wrapper stuff I was trying to use to know
...
when to reset the stack. It breaks Android when I turn on
XWFEATURE_BLUETOOTH and adds no value I can see.
2012-02-07 17:38:24 -08:00
Eric House
47c3bd3090
track a BT game's set (singleton for two-device game) of remote
...
devices in summary DB so, e.g., we can quickly determine what games
care when a devices becomes available via BT. First use of this is
notifying when a remote game's deleted -- least that's the plan. This
commit just adds to the DB and scans the DB to build a map of
device->gameIDs array.
2012-02-06 19:02:19 -08:00
Eric House
6326e45892
make btAddr a string rather than array of bytes.
2012-01-31 18:43:26 -08:00
Eric House
6bfd6e74e6
Merge branch 'android_branch' into android_bt
2012-01-26 06:24:18 -08:00
Eric House
866aeb2387
change relay connect message format to include client version (meaning
...
of which is TBD). When a new-version client connects, store the value
it's passed. At first this will let me track how quickly people
upgrade. Later I can use it to let different clients have different
formats to their messages e.g. to proxy.
2012-01-26 05:43:54 -08:00
Eric House
0934f83106
add gameID to params passed to comms' sendproc, including passing
...
through to java layer.
2012-01-25 18:27:37 -08:00
Eric House
814e4dd088
cut some logging
2012-01-03 18:53:58 -08:00
Eric House
b04604595f
change assertion to log -- fails very infrequently which is probably to be expected.
2011-12-15 18:37:20 -08:00
Eric House
eec83fe5b6
don't fail when RELAY_ALLHERE comes without a connection, as that will
...
happen when messages come in background. I'm not sure what the test
I'm removing was there to catch so need to test thoroughly.
2011-11-21 17:38:50 -08:00
Andy2
2492e7cfc5
Merge branch 'android_branch' into send_in_background
...
Conflicts:
xwords4/linux/cursesmain.c
2011-11-13 17:10:46 -08:00
Andy2
645695e358
improve logging, and fix mistyped variable found by inspection rather
...
because of a problem.
2011-11-10 06:41:07 -08:00
Andy2
f41d3c27e6
Merge branch 'android_branch' into send_in_background
...
Conflicts:
xwords4/common/server.c
2011-10-19 06:23:16 -07:00
Andy2
652b7e703a
Remove difference between debug- and non-debug stream format.
2011-10-18 21:27:28 -07:00
Andy2
b31e829414
Remove file-format differences between debug and non-debug versions.
...
Fix curses to compile non-debug.
2011-10-18 18:52:37 -07:00
Eric House
26ba812aff
cleanup
2011-09-22 17:31:57 -07:00
Andy2
92614370ce
Merge branch 'android_branch' into send_in_background
...
Conflicts:
xwords4/common/comms.c
2011-09-20 06:21:54 -07:00
Andy2
63893b8a0d
add stream_getPtr() and use to remove a couple of allocs, including
...
one per message sent.
2011-09-18 16:54:36 -07:00
Andy2
b9be2b45f4
sendMsg needs to report success if no-conn send works.
2011-08-17 18:41:45 -07:00
Andy2
7ab8c6eca4
re-factor sending code so essentially same message (without cookieID
...
that implies a connection) is sent and received by no-conn code. Use
flags to determine if comms can support no-conn sending without making
up the message only to have it fail to send.
2011-08-16 19:36:23 -07:00
Andy2
e88af19e0a
toward the ability to send replies to messages received in background
...
without user having to open the game, which will e.g. allow a host to
assign tiles, or a robot to move, without the phone's owner noticing
there's a message. This is on a branch because it may never work.
2011-08-10 18:28:34 -07:00
Eric House
cbfdf992bd
add compile-time option to allow passing game seed from commandline.
...
This should allow testing relay changes to deal better with duplicate
seeds.
2011-07-31 22:23:46 -07:00
Andy2
f3ab40519d
add new error message to DEBUG-only printing code.
2011-07-06 06:47:56 -07:00
Andy2
0eec455119
change one return type; improve logging
2011-07-04 12:46:48 -07:00
Andy2
a96dfb57f6
drop-packet test got an assert because we assumed the effects of a
...
dropped packet. Instead, now treat the connection as broken and
restart.
2011-06-27 18:30:52 -07:00
Andy2
e886a1aefe
lots more changes -- another snapshot, this, rather than stuff
...
carefully polished and reviewed. Shows progress, though, in getting
through tests.
2011-06-23 07:12:50 -07:00
Andy2
4c5c435fb5
add new parameter so client always gets notified on connection
...
including how many players are still missing.
2011-05-19 05:51:00 -07:00
Andy2
4b8e462b8b
check for null ptrs to allow creating loading games that won't draw or
...
communicate with users.
2011-01-23 21:45:41 -08:00
Andy2
4a12f7a96f
Revert "in attempt to work around non-random rand() in jni world, call back"
...
This reverts commit 99c92e779d
.
Conflicts:
xwords4/android/XWords4/jni/utilwrapper.c
2010-12-07 18:43:53 -08:00
Andy2
99c92e779d
in attempt to work around non-random rand() in jni world, call back
...
into the java world by making it a util_ctxt function. Do same on
linux to test. We'll see how it is -- and can back this commit out if
there's no improvement.
2010-12-02 19:02:36 -08:00
Eric House
7a2d279308
add logging so script can better track what state relay game is in
2010-11-18 22:27:06 -08:00
Andy2
b0a4790ce0
respond to new game-gone message by passing to utils.
2010-11-11 06:41:24 -08:00
Andy2
22f7a42c1d
make comms_getChannelSeed non-static so jni can call it
2010-11-08 17:22:38 -08:00
Andy2
cfd4345287
remove too-frequent logging
2010-11-07 13:31:43 -08:00
Andy2
9e05e6c2b3
add lastMsgRcd to status printout
2010-11-03 18:28:54 -07:00
Andy2
804070efc7
base comms_canChat() on whether connID's been assigned. It's possible
...
to send a message from a client immediately after its initial message
but init-message dupe-detection in comms will drop that because only
one channel-0 message is expected -- the initial connection message.
So don't encourage platform code to enable the feature before common
code can deliver the message.
2010-11-01 06:57:41 -07:00
Andy2
0d7f2c4f23
add devOrder (= hostID) to params passed on connect. Should make for
...
better explanatory message.
2010-10-29 06:31:33 -07:00
Andy2
4cd15a9c6a
Merge branch 'relay_proxy' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into relay_proxy
...
Conflicts:
xwords4/common/comms.c
2010-10-29 05:27:07 -07:00
Andy2
41fc05106b
add room name to callback used when device connects
2010-10-28 18:45:55 -07:00
Eric House
eba5b77494
add comms_isConnected; public room variables default to false
2010-10-27 20:50:11 -07:00
Andy2
e909e4b343
remove redundant message; advance state to ALLCONNECTED on receipt of
...
RECONN or CONN that lists the game as full. This means we get the
all-green icon (or the A in the gtk case) when in a consummated game
rather than only when all devices are actually connected.
2010-10-23 20:29:24 -07:00
Eric House
85d29cf560
if can't send allcond to a device because it's not connected queue the
...
message to be sent next time it does. And since the cookieID will
change and should be there already anyway, remove it. (Should remove
the hostID too for the same reason.)
2010-10-22 19:02:52 -07:00
Andy2
99dbbb443c
add comms_canChat, which knows better than java code what state a
...
connected game is in, and call it to determine whether to show the
chat icon.
2010-10-21 19:14:10 -07:00
Andy2
b9e3ca212b
turn off glib-dependant checksuming for non-linux builds
2010-10-18 22:08:04 -07:00
Eric House
3648c22bd4
fix long-standing bug where initial messages were not getting deleted
...
and multiplying; log md5 sums of messages in debug build.
2010-10-18 20:17:44 -07:00
Eric House
f246178b8f
Merge branch 'relay_proxy' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into relay_proxy
2010-10-12 19:18:21 -07:00
Eric House
0cf94dda8b
fix frequent assertion failure that dates from when no messages passed
...
outside of ALLCOND state. With this fix the test script is running
all games to completion if given enough time.
2010-10-12 19:16:46 -07:00
Andy2
e637a64d96
Change param signage to fix compiler warning
2010-10-11 06:20:30 -07:00
Eric House
a89520a377
use __func__
2010-09-28 18:04:31 -07:00
Eric House
047f41b516
send cookieid as part of [RE]CONNECT_RESPONSE in addition to ALL_COND (where it's now redundant).
2010-09-20 22:06:35 -07:00
Andy2
6d6ad96cde
don't clear seed when changing roles from guest to host.
2010-09-20 04:56:19 -07:00
Andy2
821e4d9c39
add ACK to protocol, returned by device after gets connName on initial
...
connection. Space is held for device on assumption ack will come
back, then given up if it fails.
2010-09-14 13:54:52 -07:00
Andy2
bd71a15ddc
turn off heartbeats on client side
2010-09-11 01:23:13 -07:00
Andy2
2ee9031fdc
langcode belongs in connect, not reconnect, message
2010-09-10 01:56:58 -07:00
Andy2
20312144dd
tons of changes, still rough, snapshoted here: a gtk device vs device
...
game works to completion with both signing up as guests (no -s) with
one local and one remote player (identical commandlines.) Not yet
tested: if any signs up as a host, reconnecting rather than
connecting, etc. This is just a snapshot.
2010-09-10 01:30:40 -07:00
Andy2
01fe388f85
remove logging accidentally checked in
2010-09-03 06:40:17 -07:00
Andy2
b742c7dbb7
add new booleans to relay address record around public rooms
2010-09-03 06:38:46 -07:00
Andy2
a34ccb424f
device now passes list of "relayID"s, consisting of connName plus
...
device id, to relay, one for each stored game that's communicating via
the relay. Relay parses out each relayID. Next relay can use these
to look up whether messages are available and reply with that, and
device can put up a notification.
2010-08-22 12:16:57 -07:00
Andy2
205723e03b
add missing event to logging
2010-07-30 17:44:20 -07:00
eehouse
ea6166f8c7
add comms_resetSame that resets relay with existing params.
2010-06-05 03:39:16 +00:00
eehouse
9b955ae770
resendAll on REconnect as well as connect since it doesn't otherwise
...
seem to get done.
2010-03-28 16:09:34 +00:00
eehouse
55abf1116b
get relay port from prefs and pass into jni
2010-03-25 04:50:19 +00:00
eehouse
786541e9ae
pass default hostname in from platform code rather than compiling it
...
into jni; in java pull it from preferences and pass into jni.
2010-03-21 03:12:58 +00:00
ehouse
8450c9da2b
New callback called on first connect to relay and on first ALLHERE
...
message so users can see progress. Handle new relay message ALLBACK
meaning "ALLHERE but not for the first time".
2009-12-14 04:03:17 +00:00
ehouse
14b060707f
Report relay connection denials due to misordering out to platform,
...
and refuse to connect again until comms has been reset. This goes
with platform code to put up the new game/conns dialogs on disconnect
errors.
2009-12-04 08:14:03 +00:00
ehouse
7fbd2bed45
Fix to compile when RELAY feature disabled
2009-11-22 18:00:20 +00:00
ehouse
5ab3425377
allow default relay port, like name, to be set at compile time
2009-11-22 16:30:20 +00:00
ehouse
3d6b43f032
fix palm and palm-arm compile problems including using changed APIs.
2009-11-19 02:22:32 +00:00
ehouse
4025c37604
Make "Room 1" the default room name.
2009-11-09 00:03:43 +00:00
ehouse
f6fb019732
Send to relay if connected, even if not all hosts present. And detect
...
duplicate initial packets a bit better. This change goes with the
next checkin on the relay side: move to modified store-and-forward so
devices can connect at different times once the game is established.
2009-11-08 21:30:13 +00:00
ehouse
3bdfda6548
Make it possible for multiple games to connect using the same room
...
name. All new connections are stored together, and after each
connection an attempt is made to build one complete game with a host
and however many guests. All remaining devices are moved into a new
pending record in the same state, and the completed game is treated as
always. Seems to work, though nearly 20% of linux instances are
failing to connect the relay run from the new test script samename.sh.
Need to figure out why.
Also added logging of seed and connname to comms.c since games
launched together can no longer be certain to connect on the relay.
This allows the test script to identify joined games from their logs
and detect success or failure.
This checkin changes the relay protocol, so relay and clients will
both need to be upgraded.
2009-11-02 01:01:47 +00:00
ehouse
b24cab9af3
Just enough changes to get compiling on Palm again: seems to work
...
against the relay! Begin process of displaying relay status via icon
reusing BT's spot.
2009-09-27 16:33:36 +00:00
ehouse
0e43675abf
Address problems matching [re]connections to games: first, go back to
...
setting connName when all in a game are present. Second, have every
host include in connections a random number. That number is made part
of the connName and in general used to test whether a host belongs in
a particular game. Add this "seed" to web interface. Means new
versions for relay protocol and game stream format. Latter is handled
correctly so older games can be opened.
2009-09-26 14:37:49 +00:00
ehouse
ef8c85734e
don't send on disconnect unless connected
2009-09-22 03:50:37 +00:00
ehouse
a13e1d6488
add util_clearTimer, implement on all platforms, and call when closing
...
comms to fix crash on Wince when timer fired after comms had been
deleted. The closure stored and passed in was no longer a valid ptr.
2009-09-21 12:49:08 +00:00
ehouse
e8b372c274
fix more release build unused var warnings
2009-09-20 21:11:58 +00:00
ehouse
18e9301e87
rename Cookie to Invite, a change that may change. Rename everywhere
...
in clients but not in relay where cookie is too pervasive. (There are
no code changes in this checkin.)
2009-09-14 03:11:11 +00:00
ehouse
6603949b0e
Fix bug where device quitting one game to start another with same
...
cookie winds up connecting to the old game -- by flagging a cref as
full and no longer accepting connections without connNames even when
in the MISSING state. Required a protocol changes so that devices get
their connNames as early as possible.
2009-09-14 01:55:03 +00:00
ehouse
6c4b991566
Modify comms and games APIs so single struct of callbacks is passed
...
instead of multiple callbacks; add callback called when relay state
changes; adapt linux and palm clients to new API. (Wince changes
pending.)
2009-09-12 21:39:13 +00:00
ehouse
615603b66b
Add define set to number of conn types compiled in; use it to compile
...
out conn type choice where there's only one (none to be made). Refuse
to dismiss conns dialog when cookie not chosen.
2009-09-05 13:08:46 +00:00
ehouse
188eea4646
Try again if fail to connect to relay.
2009-08-30 15:25:13 +00:00
ehouse
6a36c045b6
fix wince compile error
2009-08-29 13:06:48 +00:00
ehouse
dbf9daf71b
Fix problems reconnecting hosts where some but not all received the
...
ALLHERE message and connName: change relay protocol so cookie is
included in RECONNECT message, and hostIDs are not assigned until
ALLHERE, and change host-to-game matching to use connName first but
fall back to cookie. This fixes nearly all cases failing to reconnect
after relay goes down.
2009-08-21 12:00:09 +00:00
ehouse
926f5963a3
rename only: stream_putString to stream_catString.
2009-03-29 18:26:59 +00:00
ehouse
d7eaa8e574
Add functions names to log statements.
2009-03-08 19:54:50 +00:00
ehouse
4909ae0137
Close down relay connection when comms going away. Fixes crashes when
...
new game is standalone and prev used relay. Add logging code in comms.
2009-03-06 13:43:03 +00:00
ehouse
213c66b391
Reset all relay-related variable on new game. Fixes bug where devices
...
couldn't switch roles or join a new game.
2009-02-28 19:27:45 +00:00
ehouse
21d4203fe2
Empty out queue and use existing code to re-add elems we want to keep.
...
Candidate for 4.2.
2009-02-28 16:11:09 +00:00
ehouse
9abb637330
assert queue ok after deleting. Candidate for moving to 4.2 branch if
...
to be used for Palm.
2009-02-28 15:06:12 +00:00
ehouse
233bf5ffde
Fix crasher: removing ACK'd messages left list in inconsistent state.
...
Candidate for moving to 4.2 branch if to be used for Palm.
2009-02-28 14:40:50 +00:00
ehouse
43982e1a07
validate initial message correctly when comms heartbeat not being
...
used; improve logging.
2009-02-07 18:14:28 +00:00
ehouse
c672fcfafd
Make it possible to run same binary against relay with relay heartbeat
...
and direct with comms heartbeat. This mostly means changing ifdefs.
2009-02-01 15:50:58 +00:00
ehouse
e570d692b5
cleanup. SMS, not BT, is the default conType for other than Palm.
2009-01-05 02:07:30 +00:00
ehouse
e32e231dd5
New stream version makes standalone and multi-device build formats the
...
same so new Wince can open files saved by current version. Tweaks to
build with relay and heartbeat turned on.
2009-01-03 23:54:25 +00:00
ehouse
1755267d55
Add support to gtk app for tranport over "sms", with files containing
...
base64-encoded data as the messages. Make necessary changes to comms.
This is the foundation for doing real SMS transport on handhelds.
Currently a full robot game works for two gtk clients provided the
server is launched first.
2008-12-29 01:35:29 +00:00
ehouse
a26f6ad658
flag unusued param to fix compile error; move code used only in
...
multi-device games inside ifdefs.
2008-10-11 17:30:35 +00:00
ehouse
f749fdd560
Remove all tabs. No code changes.
2008-05-31 03:26:16 +00:00
ehouse
c2fbb06438
force miniwindow entirely onto board even if natural position is on
...
tray; fix overdrawing onto miniwindow by making timer proc return a
boolean and only redrawing (on wince) when it's true.
2008-04-12 15:36:31 +00:00
ehouse
a3bc875191
Fix errors, all in debug-only code, flagged by __attribute__ format addition.
2008-03-11 12:24:23 +00:00
ehouse
3374849111
Unify lookup by address and by channelNo; add method to check consistency of BT address.
2008-01-07 01:10:43 +00:00
ehouse
40f7295802
test for duplicate initial client message and if so drop it; add const keyword; add assertion in addr comparion in attempt to learn why duplicates are getting through.
2007-12-31 20:00:13 +00:00
ehouse
a07a5f2822
cleanup; replace a bunch of EvtAddEventToQueue calls with
...
postEmptyEvent; pass transport type with incoming packets so they can
be rejected if not on expected channel (to stop IR, which is always
on, from injecting into a BT game); do BT work and fire timers even
when menu is down; don't let robot run until after board is drawn for
the first time; on startup, don't let robot run until after board is
drawn once. Up version to b3.
2007-12-09 01:59:15 +00:00
ehouse
619e7d14c0
call util_addrChange prior to closing comms to fix crash moving from
...
BT to standalone game; add a couple of similar assertions; up beta
version.
2007-12-07 07:50:19 +00:00
ehouse
ad78ec1fd8
Rewrite of checkIncomingStream to be cleaner and fix bug with initial messages getting dropped
...
while heartbeat feature was enabled. Fixed the problem on Linux, but experience on Treo650
is still better without HB feature, so turning it off on Palm. This seems ready for beta,
but will test a bit more.
2007-12-05 06:33:37 +00:00
ehouse
e4c2143aed
Fix dialog title; send heartbeat based on when connected even if no
...
messages yet received; reset bt connection on palm in two stages;
remove unused param. Change version number for beta.
2007-12-03 01:20:32 +00:00
ehouse
5457ea1b59
replace all __FUNCTION__ with __func__
2007-12-02 19:13:25 +00:00
ehouse
e1d5632a7b
Re-add direct-via-ip transport, and implement for linux in order to
...
better test heartbeats. Fix so can play against Palm over BT.
Assertions failing on Linux when reset, but it's otherwise done.
2007-11-26 02:58:25 +00:00
ehouse
4c8cf98d24
Add and set a compile-time option so comms will set a periodic timer
...
and use it to send and check for heartbeats over any transport.
Caller must supply a reset proc which is called when heartbeat hasn't
been received in too long. No changes required to comms protocol, but
that means the heartbeat interval is fixed at compile time: can't be
negotiated, and the two ends had better agree. Currently tested with
linux host and PalmOS guest, where only the first heartbeat failure is
recovered from. So there's some debugging to be done still.
2007-11-18 23:43:27 +00:00
ehouse
473d506611
add logging to help catch a recurring assertion
2007-09-15 13:46:59 +00:00
ehouse
242e71f04a
What I meant to check in. Need to save first....
2007-03-18 23:38:53 +00:00
ehouse
a4fb5a6d5a
Always send BT reconnet message, even if there are messages to resend.
...
Fixes failure to reconnect when opening a saved BT game where the
other device is waiting and will need to resend.
2007-03-18 23:38:19 +00:00
ehouse
c0b515457b
Cleanup: compile warning and to make logging easier.
2007-02-08 15:17:23 +00:00
ehouse
a424d54445
Add a one-byte header to BT messages so one device can signal another
...
that a new game's begun without dropping the connection. On Palm,
remove connection-drop on new game. With this change starting a new
game takes imperciptible time, down from 30 seconds.
2007-02-08 02:53:10 +00:00
ehouse
ff82dd61c0
Fix linked-list bug in removeFromQueue.
2007-02-07 11:58:01 +00:00
ehouse
3028c9e598
deal with case where guest begins new game but connects to host that's
...
running the old game: the host may reply, but guest must not take that
as evidence of a connection having been established: don't remove sent
messages (this isn't an ACK), and don't assert later on.
2007-02-06 05:49:45 +00:00
ehouse
9a61f5c38b
Add assert; don't call comms if has been set to null (fixes device
...
reset); fix failure to install connCB (removes need to manually resend
messages when client starts up first.)
2007-02-04 17:13:01 +00:00
ehouse
e6ba8c872c
fix crash when linux is bt server: if no addr provided it's not a duplicate.
2007-01-09 02:43:09 +00:00
ehouse
02c225c413
Fix so IR-only multi-device build works again.
2007-01-06 16:46:45 +00:00
ehouse
e2f3a55611
reject initial messages coming in on the same address a second time.
...
Fixes problem that surfaces when clients are more agressive about
resending early in game.
2006-11-11 22:37:36 +00:00
ehouse
d234fc637d
make IR the default conn type on Palm, where it's been the only type
...
until now.
2006-10-15 14:09:17 +00:00
ehouse
cb2990b720
add const to a few formal param declarations
2006-10-15 13:53:17 +00:00
ehouse
5f25ba9f57
remove BEYOND_IR, replacing with XWFEATURE_RELAY and
...
XWFEATURE_BLUETOOTH. The goal is to be able to build to support
bluetooth only, or relay/ip only, e.g. for a palm bluetooth beta.
Seems to work.
2006-10-10 01:34:37 +00:00
ehouse
277624eb81
Don't return from middle of function.
2006-10-07 03:37:40 +00:00
ehouse
878acbc759
Fix opening games and messages saved by last shipping version on Palm
...
by checking version and loading new fields conditionally. (Not yet
tested for current wince version.)
2006-10-05 01:17:03 +00:00
ehouse
715d01b8a4
Put relay-only fields into a struct for easier identification. No code change.
2006-10-02 14:26:56 +00:00
ehouse
9837d8cca7
Fix longstanding bug removing too few messages from queue on ACK.
...
Print queue as part of stats.
2006-09-27 01:54:53 +00:00
ehouse
12731c59cb
fix ARM crash loading bt game saved on 68K: specify sizeof array
...
rather than struct wrapping it.
2006-09-23 16:04:53 +00:00
ehouse
04c5401711
What I meant to check in. F***ing emacs. :-)
2006-09-23 15:22:26 +00:00
ehouse
e10d05eff0
On bringup for bluetooth, resend any waiting messages rather than an
...
empty new one to get the connection started. This increases the
chances new games will connect without user having to hit resend.
2006-09-23 15:18:01 +00:00
ehouse
8667bb77bf
remove over-agressive attempt to detect out-of-order messages that was
...
breaking IR comms.
2006-09-17 05:06:46 +00:00
ehouse
e627d7f670
do a better job of rejecting messages that have strayed in from a different game.
2006-09-15 07:33:59 +00:00
ehouse
100598a35f
Make formal param const; add initial value to relay-only field so
...
asserts don't fail b/c of uninitialized value; don't typedef array:
make array field of struct.
2006-09-14 01:25:40 +00:00
ehouse
2c5d15a8dd
remove param from util_addrChange; add comms_getIsServer; save bt_addr
...
as part of comms.
2006-09-08 07:14:24 +00:00
ehouse
209da1b042
use stream_getSize to detect corrupt (truncated) messages.
2006-08-29 13:18:12 +00:00
ehouse
74c6b241d7
Put up BT device browser while user is picking connection method
...
rather than when trying to send for first time, then pass address
through from conns dialog to bt code.
2006-08-26 21:12:10 +00:00
ehouse
0c915e61b0
First shot at bluetooth support (turned off in Makefile by default).
...
A full robot vs. robot game now works between two Treos. Added UI to
choose BT as transport mechanism, and added new send proc to establish
socket connection between host and guest. Works only for two devices:
no piconet yet. No error recovery, ability to quit game in middle,
start new game, etc.
2006-08-23 04:44:55 +00:00
ehouse
4daabf6fe5
Set -Wunused-parameter for those versions of gcc that support it, and
...
deal with the output by removing params where possible and elsewhere
by adding XP_UNUSED macro wrapping __attribute__((unused)). There
should be NO change in function in spite of the large number of files.
2006-08-16 13:44:44 +00:00
ehouse
46cd6e8536
add ifdef for compile with some optional condition
2006-06-16 01:46:47 +00:00
ehouse
b10ca04e07
don't exclude BEYOND_IR-only fields
2006-04-07 03:08:23 +00:00
ehouse
92485783af
update email address in header comments: no code change
2006-01-08 01:25:02 +00:00
ehouse
cda5996195
fix unset var warning
2005-10-30 16:14:13 +00:00
ehouse
6835b6d1eb
New scheme for accepting and limiting reconnections. Now device must
...
send player counts, local and expected. Based on these the relay
accepts connections, declares the game full and ready for message
forwarding, and decides whether to accept a reconnect.
2005-10-02 15:39:38 +00:00
ehouse
c5add889cb
make transmitted vars smaller where possible; new relay identifying
...
scheme where cookie is used only to connect, and is replaced for
reconnects by a relay-generated name that's supposed to be unique
across all games on all relays; let relay assign non-servers' hostIDs
rather than doing 'em randomly; use hostIDs for comms-level protocol's
channelNo where possible to avoid tripping over duplicate messages
2005-10-01 16:01:39 +00:00
ehouse
5c01044e8c
send disconnect message to relay before starting a new game.
2005-09-05 15:33:51 +00:00
ehouse
6f8b33a05b
reset cookieID for a new game
2005-09-04 20:30:47 +00:00
ehouse
59edec4955
handle OTHER_CONNECT message by resending any unACKed messages.
2005-09-03 18:31:32 +00:00
ehouse
abbd1a072f
handle other-disconnected error message
2005-09-03 15:37:49 +00:00
ehouse
ab0e833a9b
Receive disconnect events and display message for error codes.
2005-09-03 06:57:01 +00:00
ehouse
39fa5728ef
send XWRELAY_RECONNECT
2005-09-02 06:26:33 +00:00
ehouse
24fb48008f
cleanup for wince compile
2005-07-23 15:28:15 +00:00
ehouse
3b53363e16
Pass protocol version code with connect request, and return error if
...
it isn't what relay can handle. Report error to user.
2005-07-06 01:36:52 +00:00
ehouse
5b3e5fbf18
name change
2005-07-06 00:58:20 +00:00
ehouse
1ae6c010c9
Make cookieID a 32-bit value instead of 16-bit
2005-07-05 23:02:15 +00:00
ehouse
327fb7b001
eliminate unnecessary setHeartbeatTimer call
2005-07-05 20:57:37 +00:00
ehouse
978d840df7
put back functions that never should have been removed.
2005-06-27 05:45:28 +00:00
ehouse
e92234b324
cleanup: make module-local functions static
2005-06-25 05:43:56 +00:00
ehouse
dfccb19667
convert util_setTimer to take procptr; remove timer call on board; add
...
heartbeat to comms that uses util_setTimer with new timer type.
2005-06-23 04:16:53 +00:00
ehouse
31e1a46087
separate internalization of comms from call to connect to relay since
...
the first must finish before the caller will have a valid reference to
comms. call util_addrChange.
2005-04-03 17:00:59 +00:00
ehouse
ad6de22306
add comms_getInitialAddr; protect against recursive sends
2005-04-03 02:49:04 +00:00
ehouse
edceee12a8
add XP_LD so symbian can long 32-bit vals
2005-03-20 19:41:30 +00:00
ehouse
078ab48fa1
fix bad assert
2005-03-20 15:01:59 +00:00
ehouse
d6efb446d1
Wrapping protocol around standard comms stuff that talks to the relay.
...
Revert previous relay-related changes.
2005-03-19 22:01:38 +00:00
ehouse
219b6ce937
save hostIDs as part of comms; add logging
2005-03-09 15:18:17 +00:00
ehouse
0f9eb528d8
fix conflict with type from Palm headers; fix for non-BEYOND_IR case.
2005-03-08 05:33:38 +00:00
ehouse
cb3a3854e9
add support for relay for use by NAT'd/firewalled devices: cellphones.
...
Include cookie users will agree on on for relay rendevouz, and
sender/receiver IDs for when there are >2 devices in game. Supports
games between linux clients now, but needs a lot more work.
2005-03-06 17:56:34 +00:00
ehouse
49e4c1f6e4
keep hostname as well as IP address in CommsAddrRec
2005-01-31 03:31:50 +00:00
ehouse
71142255d6
deal with older stream version
2004-10-08 23:54:57 +00:00
ehouse
f13c0a3473
fix arm<->68K save/open problem by not relying on sizeof and saving
...
each field explicitly (as I already do everywhere else.)
2004-10-02 03:47:24 +00:00
ehouse
96a241c7d3
reject message with wrong connID
2004-10-01 01:25:55 +00:00
ehouse
5776da0b93
first checkin
2003-11-01 05:35:29 +00:00