Skip to content

Instantly share code, notes, and snippets.

@wrongu
Last active April 21, 2016 00:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wrongu/d36e0b5934e26beed2b4af0c641a900b to your computer and use it in GitHub Desktop.
Save wrongu/d36e0b5934e26beed2b4af0c641a900b to your computer and use it in GitHub Desktop.
script to execute GTP engine from https://github.com/wrongu/gtp
#!/usr/bin/env python
from gtp import Engine
from gtp import MinimalGame
import sys
import SocketServer
class GTPRequestForwarder(SocketServer.BaseRequestHandler):
def handle(self):
request_body = self.request.recv(1024).strip()
print ">>", request_body
reply = self.server.engine.send(request_body)
print "<<", reply
self.request.sendall(reply)
def finish(self):
if self.server.engine.disconnect:
self.server.shutdown()
class TCPEngine(SocketServer.TCPServer):
def __init__(self, game, *args, **kwargs):
SocketServer.TCPServer.__init__(self, *args, **kwargs)
self.engine = Engine(game)
def run_server(game, address, port):
server = TCPEngine(game, (address, port), GTPRequestForwarder)
try:
print "Accepting TCP commands at %s:%d" % (address, port)
server.serve_forever()
except KeyboardInterrupt:
server.shutdown()
server.server_close()
print "EXITED"
except Exception as e:
print e
print "ERRORED"
def run_stdio(game, timeout=5):
engine = Engine(game)
while True:
reply = engine.send(raw_input())
sys.stdout.write(reply)
sys.stdout.flush()
if engine.disconnect:
break
if __name__ == '__main__':
if '--tcp' in sys.argv:
print("NOTE: SERVER IS UNTESTED")
run_server(MinimalGame(), 'localhost', 8888)
else:
run_stdio(MinimalGame())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment