Use the first letter of your name to indicate you are in the middle of
working on something.
+Protocol pieces
+---------------
+
/----- Server, implemented in ttt-server
/ /---- Client, implemented in ttt
S C
✓ 1.2.6. VERSION
1.3. Game management commands
✓ 1.3.1. INVITE
-✓ 1.3.2. ACCEPT
- 1.3.3. RETRACT
- 1.3.4. DECLINE
+ 1.3.2. ACCEPT
+✓ 1.3.3. RETRACT
+✓ 1.3.4. DECLINE
1.4. In-game commands
1.4.1. SHOW
1.4.2. PART
2.1. Global notices
✓ 2.1.1. NOTICE USER <username>
✓ 2.1.2. NOTICE QUIT <username>
- 2.1.3. Game Invitation
+✓ 2.1.3. Game Invitation
✓ 2.1.3.1. NOTICE INVITE <username1> <username2>
✓ 2.1.3.2. NOTICE ACCEPT <username2> <username1>
- 2.1.3.3. NOTICE RETRACT <username1> <username2>
- 2.1.3.4. NOTICE DECLINE <username2> <username1>
+✓ 2.1.3.3. NOTICE RETRACT <username1> <username2>
+✓ 2.1.3.4. NOTICE DECLINE <username2> <username1>
2.1.4. NOTICE NEWGAME <game> <username> <username>
2.1.5. NOTICE DISPOSE <game>
✓ 2.1.6. NOTICE MESSAGE <username> <text>
2.2.2. Move notices
2.2.2.1. NOTICE MOVE <game> <username> <number>
3. Errors
- 3.1. Connection setup errors
+✓ 3.1. Connection setup errors
✓ 3.1.1. ERROR NO_NAME_SET
✓ 3.1.2. ERROR INVALID_NAME
3.2. Command format errors
3.2.4. ERROR NOT_GRID
3.3. Global command errors.
3.4. Game management errors.
- 3.4.1. ERROR NO_GAME
- 3.5. User information errors
+✓ 3.4.1. ERROR NO_INVITE
+ 3.4.2. ERROR NO_GAME
+✓ 3.5. User information errors
✓ 3.5.1. ERROR NO_USER
3.6. In-game errors
3.6.1. Global game errors
3.6.1.1. ERROR NOT_PLAYING
3.6.2. Moving errors
3.6.2.1. ERROR NOT_YOUR_TURN
+ 3.6.2.2. ERROR NOT_VALID_MOVE
+
+Other bits
+----------
+Server log messages should include pid date and time. And server
+should log the fact when it gets terminated by a signal.
+
+Server should wait and retry a couple of times if its port is not
+available, rather than just giving up.