X-Git-Url: https://plomlompom.com/repos/test.html?a=blobdiff_plain;f=plomrogue-server.py;h=a1e3a44f120530276d61fbbb3f1cc08f4438e705;hb=dff65f419bc0ac5af9fd2003c0f958d0c50e27cc;hp=d6c1930da2613a88c98e844b830b861c9fd2c482;hpb=21ba1d03b1e883564d301c2781039017dd704b20;p=plomrogue
diff --git a/plomrogue-server.py b/plomrogue-server.py
index d6c1930..a1e3a44 100755
--- a/plomrogue-server.py
+++ b/plomrogue-server.py
@@ -6,6 +6,13 @@ import shutil
import time
+def strong_write(file, string):
+ """Apply write(string), flush() and os.fsync() to file."""
+ file.write(string)
+ file.flush()
+ os.fsync(file)
+
+
def setup_server_io():
"""Fill IO files DB with proper file( path)s. Write process IO test string.
@@ -25,8 +32,7 @@ def setup_server_io():
io_db["teststring"] = str(os.getpid()) + " " + str(time.time())
os.makedirs(io_db["path_server"], exist_ok=True)
io_db["file_out"] = open(io_db["path_out"], "w")
- io_db["file_out"].write(io_db["teststring"] + "\n")
- io_db["file_out"].flush()
+ strong_write(io_db["file_out"], io_db["teststring"] + "\n")
if os.access(io_db["path_in"], os.F_OK):
os.remove(io_db["path_in"])
io_db["file_in"] = open(io_db["path_in"], "w")
@@ -101,9 +107,7 @@ def atomic_write(path, text, do_append=False):
if os.access(path, os.F_OK):
shutil.copyfile(path, path_tmp)
file = open(path_tmp, mode)
- file.write(text)
- file.flush()
- os.fsync(file.fileno())
+ strong_write(file, text)
file.close()
if os.access(path, os.F_OK):
os.remove(path)
@@ -160,7 +164,7 @@ def save_world():
string = ""
for key in world_db:
- if dict != type(world_db[key]):
+ if dict != type(world_db[key]) and key != "MAP":
string = string + key + " " + str(world_db[key]) + "\n"
string = string + helper("ThingActions", "TA_ID")
string = string + helper("ThingTypes", "TT_ID", {"TT_CORPSE_ID": False})
@@ -270,9 +274,7 @@ def try_worldstate_update():
string = string + line + "\n"
# TODO: no proper user-subjective map
atomic_write(io_db["path_worldstate"], string)
- io_db["file_out"].write("WORLD_UPDATED\n")
- io_db["file_out"].flush()
- os.fsync(io_db["file_out"])
+ strong_write(io_db["file_out"], "WORLD_UPDATED\n")
io_db["worldstate_updateable"] = False
@@ -416,9 +418,7 @@ def id_setter(id, category, id_store=False, start_at_1=False):
def command_ping():
"""Send PONG line to server output file."""
- io_db["file_out"].write("PONG\n")
- io_db["file_out"].flush()
- os.fsync(io_db["file_out"].fileno())
+ strong_write(io_db["file_out"], "PONG\n")
def command_quit():
@@ -482,7 +482,7 @@ def command_makeworld(seed_string):
}
# generate fov map?
# TODO: Generate things (player first, with updated memory)
- atomic_write(io_db["path_out"], "NEW_WORLD\n", do_append=True)
+ strong_write(io_db["file_out"], "NEW_WORLD\n")
def command_maplength(maplength_string):
@@ -800,7 +800,7 @@ commands_db = {
"""World state database. With sane default values."""
world_db = {
- "TURN": 1,
+ "TURN": 0,
"SEED_MAP": 0,
"SEED_RANDOMNESS": 0,
"PLAYER_TYPE": 0,