X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;ds=sidebyside;f=src%2Fserver%2Frun.h;h=414df1b3e684efb4d9152040e629d04852871318;hb=96cdebb17848901906799677f45c67263f759f6a;hp=9fa526ff0121f2fea4e1352cec82f1f7b588e15e;hpb=d12efb0addf420adc045cfb96647dff6241310ee;p=plomrogue
diff --git a/src/server/run.h b/src/server/run.h
index 9fa526f..414df1b 100644
--- a/src/server/run.h
+++ b/src/server/run.h
@@ -1,4 +1,8 @@
/* src/server/run.h
+ *
+ * This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3
+ * or any later version. For details on its copyright, license, and warranties,
+ * see the file NOTICE in the root directory of the PlomRogue source package.
*
* Process commands and act on them. Stuff that furthers the state of the game.
*/
@@ -10,19 +14,32 @@
-/* Try parsing "msg" into a server or player command to run. Player commands are
- * are recorded into the record file at world.path_record if "do_record" is set.
+/* Append "answer" to server output file, with instant fflush() if "flush". */
+extern void send_to_outfile(char * answer, uint8_t flush);
+
+/* Record save and record file data. Both are only written if "force" is set, or
+ * on the first run with unset "force", or if 15 seconds have passed since the
+ * last file writing. "msg" is appended to the record file if it is set.
*/
-extern void obey_msg(char * msg, uint8_t do_record);
-
-/* Loop for receiving commands via io_round() and acting on them. Exits with 1
- * on "QUIT" command. In replay mode, exits with 0 on each non-"QUIT" command.
- * Writes a "PONG" line to server output file on "PING" command. In play mode,
- * processes further incomming commands via obey_msg(). Compares the first line
- * of the file at world.path_out with world.server_test to ensure that the
- * current server process has not been superseded by a new one.
+extern void record(char * msg, uint8_t force);
+
+/* Try parsing "msg" into a command to apply. Output "msg" if world.is_verbose.
+ * If "obey_state" is > 1 and world.replay is set, any non-meta command message
+ * is not executed, but merely returns 3. The QUIT meta command (if well-formed)
+ * always returns 2. Other meta commands and (with "obey_state" < 2) non-meta
+ * commands return 1 if well-formed. Malformed or empty command messages return
+ * 0. If "obey_state" is 1, "msg" is recorded via a non-forced record(). If a
+ * non-meta command is executed and world.exists, world.do_update is set.
+ */
+extern uint8_t obey_msg(char * msg, uint8_t obey_state);
+
+/* Loop to read commands via io_round() and call obey_msg() with "obey_state"
+ * set on them. If latter returns 2 and world.replay is not set, or returns > 1
+ * and world.replay is set, abort loop to return that result. After io_round(),
+ * compares 1st line of the server out file is compared with world.server_test
+ * to ensure the server process hasn't been superseded by a new one.
*/
-extern uint8_t io_loop();
+extern uint8_t io_loop(uint8_t obey_state);