* src/Makefile.am:
* src/ttt-error.h:
* src/ttt-error.c: (ttt_error_string): Add error values and error
strings from protocol.
* src/ttt.h: Add typedefs for ttt_client_t and ttt_server_t so
that there's no problem with ttt-client.h and ttt-server.h needing
to mutually include each other.
* src/ttt-server.h:
* src/ttt-server.c: (ttt_server_register_client),
(ttt_server_unregister_client), (_ttt_server_accept), (main): Push
the client request handling thread back down into ttt-client.c
where it really does belong. The server code no longer ever
reaches down inside the ttt_client_t structure. Export
ttt_server_register_client and ttt_server_unregister_client. Add
documentation for ttt_server_broadcast. Document locking semantics
for all functions which acquire the server lock.
* src/ttt-client.h:
* src/ttt-client.c: (_ttt_client_create), (_ttt_client_destroy),
(_read_into_request_until), (_read_request), (_execute_request),
(_handle_requests_thread), (ttt_client_new), (ttt_client_get_id):
Pull the ttt_client structure definition back down inside the
ttt-client.c file. Don't export ttt_client_create and
ttt_client_destroy anymore, but instead just use static
_ttt_client_init and _ttt_client_fini. Implement the broadcast by
just passing a client pointer around and using client->request
rather than passing char *request all over. Document new
ttt_client_new and remove ttt_client_read_line. Add locking to
ttt_client_send and document it. Add ttt_client_get_id.