X-Git-Url: https://plomlompom.com/repos/index.html?a=blobdiff_plain;f=plomrogue-server.py;h=5a5bd91c6d5ca8b382e7287b00c936a60d37bd99;hb=f2369d5b5908a9bab6659c8a6272804b50d60ee9;hp=0b3ce1f85f72f7800527b5b13a05da7218d3f3d4;hpb=833a1fa083b563f0ac774b68780e7419fda65238;p=plomrogue
diff --git a/plomrogue-server.py b/plomrogue-server.py
index 0b3ce1f..5a5bd91 100755
--- a/plomrogue-server.py
+++ b/plomrogue-server.py
@@ -1,6 +1,7 @@
import argparse
import errno
import os
+import shlex
import time
@@ -40,7 +41,7 @@ def cleanup_server_io(io_db):
def detect_atomic_leftover(path):
- """Raise explained HandledException if file is found at path + "_tmp"."""
+ """Raise explained SystemExit if file is found at path + "_tmp"."""
path_tmp = path + "_tmp"
msg = "Found file '" + path_tmp + "' that may be a leftover from an " \
"aborted previous attempt to write '" + path + "'. Aborting until " \
@@ -49,47 +50,27 @@ def detect_atomic_leftover(path):
raise SystemExit(msg)
-def obey(msg):
+def obey(cmd, io_db, path_recordfile):
""""""
- print("Input: " + msg)
+ print("Input: " + cmd)
+ tokens = shlex.split(cmd)
+ if "QUIT" == tokens[0] and 1 == len(tokens):
+ raise SystemExit("received QUIT command")
+ elif "PING" == tokens[0] and 1 == len(tokens):
+ io_db["file_out"].write("PONG\n")
+ elif "MAKE_WORLD" == tokens[0] and 2 == len(tokens):
+ print("I would generate a new world now, if only I knew how.")
+ record(cmd, path_recordfile)
+ else:
+ print("Invalid command/argument, or bad number of tokens.")
+
+def record(cmd, path_recordfile):
+ """Append cmd string plus newline to file at path_recordfile."""
+ file = open(path_recordfile, "a")
+ file.write(cmd + "\n")
+ file.close()
-def tokenize(string):
- """Divide string by ' ', \t & " quotes (that also group). Escape with \."""
- charlist_A = list(string)
- i = 0
- for c in charlist_A:
- if "\\" == c and i < len(charlist_A) - 1:
- charlist_A[i] = "remove"
- charlist_A[i + 1] = charlist_A[i + 1] + "_escaped"
- i = i + 1
- charlist_B = []
- for c in charlist_A:
- if "remove" != c:
- charlist_B.append(c)
- in_quotes = 0
- i = 0
- for c in charlist_B:
- if "\"" == c:
- in_quotes = 0 if in_quotes else 1
- if i < len(charlist_B) - 1:
- charlist_B[i] = "separator"
- elif (not in_quotes) and (" " == c or "\t" == c):
- charlist_B[i] = "separator"
- i = i + 1
- list_of_charlists = [[]]
- i = 0
- for c in charlist_B:
- if "separator" == c:
- if [] != list_of_charlists[-1]:
- list_of_charlists.append([])
- i = i + 1
- else:
- list_of_charlists[i].append(c[0])
- tokens = []
- for charlist in list_of_charlists:
- tokens.append("".join(charlist))
- return tokens
io_db = {}
@@ -114,8 +95,7 @@ try:
elif os.access(path_savefile, os.F_OK):
print(open(path_savefile, "r").read())
else:
- msg = "MAKE_WORLD " + str(int(time.time()))
- obey(msg)
+ obey("MAKE_WORLD " + str(int(time.time())), io_db, path_recordfile)
except SystemExit as exit:
print("ABORTING: " + exit.args[0])
except: