X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdeck_id%7D%7D/cards/%7B%7Bcard_id%7D%7D/form?a=blobdiff_plain;ds=sidebyside;f=plomrogue-server.py;h=f07e9bf0de773404b236ac4b1854a587b1b5ab72;hb=1b879d023acd5d9bdf3f499aff11240c3aeeaf19;hp=a921e93558fe3cd7993aa4757bc8dc4d3a36193a;hpb=0a1f22190fb47ef4301e1aaa10ff7605352565ee;p=plomrogue diff --git a/plomrogue-server.py b/plomrogue-server.py index a921e93..f07e9bf 100755 --- a/plomrogue-server.py +++ b/plomrogue-server.py @@ -9,14 +9,16 @@ import time def setup_server_io(io_db): """Fill IO files DB with proper file( path)s. Write process IO test string. - Decide file paths. Ensure IO files directory at server/. Remove any old in - file if found. Set up new in file (io_db["file_in"]) for reading at - io_db["path_in"], and new out file (io_db["file_out"]) for writing at - io_db["path_out"]. Start out file with process hash line of format PID + - " " + floated UNIX time (io_db["teststring"]). Run detect_atomic_leftover - on io_db["path_record"] and io_db["path_save"]. + Set io_db["kicked_by_rival"] to False. Decide file paths. Ensure IO files + directory at server/. Remove any old in file if found. Set up new in file + (io_db["file_in"]) for reading at io_db["path_in"], and new out file + (io_db["file_out"]) for writing at io_db["path_out"]. Start out file with + process hash line of format PID + " " + floated UNIX time + (io_db["teststring"]). Run detect_atomic_leftover on io_db["path_record"] + and io_db["path_save"]. """ io_dir = "server/" + io_db["kicked_by_rival"] = False io_db["path_in"] = io_dir + "in" io_db["path_out"] = io_dir + "out" io_db["path_worldstate"] = io_dir + "worldstate" @@ -100,28 +102,16 @@ def record(cmd, io_db): os.rename(path_tmp, io_db["path_record"]) -def obey_lines_in_file(path, name, break_test=None): - """Call obey() on each line of path's file, use name in input prefix. - - If break_test function is set, only read the file until it returns True. - """ +def obey_lines_in_file(path, name): + """Call obey() on each line of path's file, use name in input prefix.""" file = open(path, "r") line_n = 1 for line in file.readlines(): - if None != break_test and break_test(): - break obey(line.rstrip(), io_db, name + "file line " + str(line_n)) line_n = line_n + 1 file.close() -def make_turn_tester(turn_to_compare, world_db): - """Return tester whether world_db["turn"] greater/equal turn_to_compare.""" - def turn_tester(): - return world_db["turn"] >= turn_to_compare - return turn_tester - - def parse_command_line_arguments(): """Return settings values read from command line arguments.""" parser = argparse.ArgumentParser() @@ -149,6 +139,10 @@ def server_test(io_db): raise SystemExit(msg) +def io_loop (): + return False + + io_db = {} world_db = {} try: @@ -163,9 +157,19 @@ try: if not os.access(io_db["path_record"], os.F_OK): raise SystemExit("No record file found to replay.") world_db["turn"] = 0 - break_tester = make_turn_tester(opts.replay, world_db) - obey_lines_in_file(io_db["path_record"], "record ", break_tester) - # what to do next? + file = open(io_db["path_record"], "r") + prefix = "record file line " + line_n = 1 + while world_db["turn"] < opts.replay: + server_test(io_db) + obey(file.readline().rstrip(), io_db, prefix + str(line_n)) + line_n = line_n + 1 + world_db["turn"] = world_db["turn"] + 1 + while io_loop(): + server_test(io_db) + obey(file.readline().rstrip(), io_db, prefix + str(line_n)) + line_n = line_n + 1 + file.close() else: if os.access(io_db["path_save"], os.F_OK): obey_lines_in_file(io_db["path_save"], "save") @@ -175,9 +179,9 @@ try: raise SystemExit(msg) obey_lines_in_file(io_db["path_worldconf"], "world config ") obey("MAKE_WORLD " + str(int(time.time())), io_db, "in file") - while 1: + while io_loop(): server_test(io_db) - # print("DUMMY: Run io_loop().") + # more? except SystemExit as exit: print("ABORTING: " + exit.args[0]) except: