<response> is one of:
<command> <args>
- ERROR <message>
+ ERROR <error-code>
1. Requests
-1.1 Connection setup
+1.1. Connection setup
The TTTP server has no well defined port; agreement on which port to
use must be done through some external mechanism. Once connected,
HELO <username> <server-addr> <server-port>
- Possible errors: INVALIDNAME
+ Possible errors: INVALID_NAME
1.2. Global commands
- 1.2.1 Listing available users
+ 1.2.1. Listing available users
WHO
->
- WHO <username1> <games1> <username2> <games2> ...
+ WHO <username1> <username2> ...
- Lists connected users and the number of games they've won.
+ Lists connected users.
- Possible errors: NONAMESET
+ Possible errors: NO_NAME_SET
- 1.2.2. Message
+ 1.2.2. STATISTICS
+
+ STATISTICS <username>
+
+ ->
+
+ STATISTICS <username> "
+ TICTACTOE WINS <wins>
+ "
+
+ Lists the statistics for the specified user.
+
+ Possible errors: NO_NAME_SET, NO_USER
+
+ 1.2.3. Message
MESSAGE <text>
single token. Use a quoted-string to include spaces in the
message text.
- Possible errors: NONAMESET
+ Possible errors: NO_NAME_SET
- 1.2.3. Help
+ 1.2.4. Help
HELP { <command> }
+ ->
+
+ HELP { <command> } "
+ <overview or detailed help>
+ "
+
Displays help. If <command> is provided, displays more
detailed help on a specific command, otherwise displays an
overview of all commands.
- 1.2.4. Quit
+ 1.2.5. Quit
QUIT
Disconnects the client from the server.
- 1.2.5. Version
+ 1.2.6. Version
VERSION <client-version-number>
INVITE
- Possible errors: NOUSER, BUSY, NONAMESET
+ Possible errors: NO_USER, BUSY, NO_NAME_SET
1.3.2. Accepting an invitation
ACCEPT
- Possible errors: NONAMESET
+ Possible errors: NO_NAME_SET
1.4. In-game commands
_|X|_
X|O|O"
- Possible errors: NOTINGAME, NONAMESET
+ Possible errors: NOT_IN_GAME, NO_NAME_SET
1.4.2. Part
Departs the current game
- Possible errors: NOTINGAME, NONAMESET
+ Possible errors: NOT_IN_GAME, NO_NAME_SET
1.4.3. Making a move
3|4|5
6|7|8
- Possible errors: NOTINGAME, NOTYOURMOVE, NOTGRID, NONAMESET
+ Possible errors: NOT_IN_GAME, NOT_YOUR_MOVE, NOT_GRID, NO_NAME_SET
2. Asynchronous notification.
NOTICE MESSAGE <username> <text>
+ where <text> is a quoted-string. Quotes escaped with '\"'
+
2.2. Game notices
These notices are sent to all players and watchers in
NOTICE GAMEOVER <outcome> <username>
- <outcame> is either WON in which case <username> indicates
+ <outcome> is either WON in which case <username> indicates
the winner or CATSGAME in which case <username> is "".
2.2.2. Move notices
3.1.1. No name set
- ERROR NONAMESET
+ ERROR NO_NAME_SET
'helo' must be sent before any command other than 'help',
'version', 'quit'.
3.1.2. Invalid name
- ERROR INVALIDNAME
+ ERROR INVALID_NAME
All names must be of non-zero length and must be unique.
3.2.3. Not number
- ERROR NOTNUMBER
+ ERROR NOT_NUMBER
A non-numeric value was supplied where a number was required
3.2.4. Not a grid number
- ERROR NOTGRID
+ ERROR NOT_GRID
The number specified in the command was not a valid grid number
3.4.1. No such game
- ERROR NOGAME
+ ERROR NO_GAME
A game name was provided that does not exist.
3.5.1. No such user
- ERROR NOUSER
+ ERROR NO_USER
A user name was provided that does not exist.
3.6.1.1. Not in game
- ERROR NOTINGAME
+ ERROR NOT_IN_GAME
A game playing command was made, but the user is not a
particpant of any game.
3.6.1.2. Not playing
- ERROR NOTPLAYING
+ ERROR NOT_PLAYING
A command was executed by a watching user that is
permitted only to players
3.6.2.1. Not your turn
- ERROR NOTYOURTURN
+ ERROR NOT_YOUR_TURN
A move was submitted during the other player's turn