summaryrefslogtreecommitdiff
path: root/snakegame/zmq.py
blob: c38c680d340db93ac3b7a87162a06c67fe4a4aa8 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from __future__ import absolute_import

import pickle

class Viewer(object):
    def __init__(self, engine, sock):
        self.sock = sock
        self.engine = engine

    def run(self):
        for board in self.engine:
            bots = {
                letter: (None, colour, None, team)
                for letter, (_, colour, _, team) in self.engine.bots.iteritems()
            }

            msg = pickle.dumps({
                'bots': bots,
                'board': board,
            }, protocol=2)

            self.sock.send(msg)

class Engine(object):
    def __init__(self, sock):
        self.sock = sock

    def __iter__(self):
        while True:
            if not self.sock.poll(timeout=2000):
                break
            msg = self.sock.recv()
            obj = pickle.loads(msg)
            self.bots = obj['bots']
            yield obj['board']