<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.
- 1.2.2. Message
+ Possible errors: NO_NAME_SET
+
+ 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>
MESSAGE
- 1.2.3. Help
+ Sends a message to all connected users. The text must be a
+ single token. Use a quoted-string to include spaces in the
+ message text.
+
+ Possible errors: NO_NAME_SET
+
+ 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
+ Possible errors: NO_USER, BUSY, NO_NAME_SET
1.3.2. Accepting an invitation
ACCEPT
+ Possible errors: NO_NAME_SET
+
1.4. In-game commands
1.4.1. Get the game contents
_|X|_
X|O|O"
- Possible errors: NOTINGAME
+ Possible errors: NOT_IN_GAME, NO_NAME_SET
1.4.2. Part
Departs the current game
- Possible errors: NOTINGAME
+ 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
+ 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 'quit'.
+ 'helo' must be sent before any command other than 'help',
+ 'version', 'quit'.
+
+ Possibly returned by: WHO MESSAGE INVITE ACCEPT SHOW PART MOVE
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