Commit Qwebchess before fucking with it
[progcomp2013.git] / qchess / src / log.py
index 1ef8145..ec7e6ea 100644 (file)
@@ -3,8 +3,8 @@ import datetime
 import urllib2
 
 class LogFile():
-       def __init__(self, log):        
-               
+       def __init__(self, log, name):  
+               self.name = name
                self.log = log
                self.logged = []
                self.log.write("# Log starts " + str(datetime.datetime.now()) + "\n")
@@ -17,7 +17,7 @@ class LogFile():
        def setup(self, board, players):
                
                for p in players:
-                       self.log.write("# " + p.colour + " : " + p.name + "\n")
+                       self.log.write("# " + str(p.colour) + " : " + str(p.name) + "\n")
                
                self.log.write("# Initial board\n")
                for x in range(0, w):
@@ -38,7 +38,7 @@ class ShortLog(LogFile):
                        self.log = sys.stdout
                else:
                        self.log = open(file_name, "w", 0)
-               LogFile.__init__(self, self.log)
+               LogFile.__init__(self, self.log, "@"+file_name)
                self.file_name = file_name
                self.phase = 0
 
@@ -131,11 +131,51 @@ class HttpReplay():
                        
        def close(self):
                self.getter.stop()
+
+class FileReplay():
+       def __init__(self, filename):
+               self.f = open(filename, "r", 0)
+               self.filename = filename
+               self.mod = os.path.getmtime(filename)
+               self.count = 0
+       
+       def readline(self):
+               line = self.f.readline()
+               
+               while line == "":
+                       mod2 = os.path.getmtime(self.filename)
+                       if mod2 > self.mod:
+                               #sys.stderr.write("File changed!\n")
+                               self.mod = mod2
+                               self.f.close()
+                               self.f = open(self.filename, "r", 0)
+                               
+                               new_line = self.f.readline()
+                               
+                               if " ".join(new_line.split(" ")[0:3]) != "# Short log":
+                                       for i in range(self.count):
+                                               new_line = self.f.readline()
+                                               #sys.stderr.write("Read back " + str(i) + ": " + str(new_line) + "\n")
+                                       new_line = self.f.readline()
+                               else:
+                                       self.count = 0
+                               
+                               line = new_line
+
+               self.count += 1
+               return line
+
+       def close(self):
+               self.f.close()
+               
                                                
 def log(s):
        for l in log_files:
                l.write(s)
                
+def debug(s):
+       sys.stderr.write("# DEBUG: " + s + "\n")
+               
 
 def log_init(board, players):
        for l in log_files:

UCC git Repository :: git.ucc.asn.au