home
·
contact
·
privacy
projects
/
plomrogue
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
21ba1d0
)
Server/py: Refactoring, heavier use of flush() and fsync().
author
Christian Heller
<c.heller@plomlompom.de>
Tue, 3 Mar 2015 00:48:53 +0000
(
01:48
+0100)
committer
Christian Heller
<c.heller@plomlompom.de>
Tue, 3 Mar 2015 00:48:53 +0000
(
01:48
+0100)
plomrogue-server.py
patch
|
blob
|
history
diff --git
a/plomrogue-server.py
b/plomrogue-server.py
index d6c1930da2613a88c98e844b830b861c9fd2c482..cd54c86965c46d9cdd87530f2948d15c8df61e16 100755
(executable)
--- a/
plomrogue-server.py
+++ b/
plomrogue-server.py
@@
-6,6
+6,13
@@
import shutil
import time
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.
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["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")
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)
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)
file.close()
if os.access(path, os.F_OK):
os.remove(path)
@@
-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)
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
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."""
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():
def command_quit():