3 * Communication of the server with the outside world and its client via input,
4 * output and world state files.
12 /* Return single \0-terminated string read from input queue (world.queue); or,
13 * if queue is empty and world.turn is unequal world.last_update_turn, update
14 * world state file at world.path_worldstate (and update world.last_update_turn
15 * and write a single dot line to output file at world.path_out), then read file
16 * at world.path_in for the next load of bytes to put onto the input queue.
18 * Reading the file at world.path_in may put many \0-terminated strings on the
19 * queue at once. Successive calls of io_round() will make these available one
20 * by one. Each such call cuts off bytes from the beginning of world.queue, up
21 * to and including the last \0 byte that is followed by a non-\0 byte or ends
22 * the queue. If the queue starts with a \0 byte, it and its \0 followers are
23 * cut and a NULL pointer is returned. Reading from the input file stops only
24 * when one or more byte were read and the next read returns 0 bytes. If the
25 * re-filled queue does not end in a \0 byte, a \0 byte is appended to it.
27 extern char * io_round();