Esempio n. 1
0
    def listen(self):
        client = CCNxClient()
        tutorialPrefix = "lci:/tutorial/game"
        gameInfoName = "lci:/tutorial/game/info"
        playerConnectName = "lci:/tutorial/game/connect"
        playerInfoName = "lci:/tutorial/game/players"
        playerStateName = "lci:/tutorial/game/players/state"

        listening = client.listen(tutorialPrefix)
        while listening:
            name, data = client.receive()

            # Short circuits
            if name == None or data == None:
                continue
            if self.isDone:
                listening = False
                continue

            if name == gameInfoName:
                payload = {
                    "connect-url" : str(playerConnectName),
                    "board-size" : self.board.board_size(),
                    "player-url" : str(playerInfoName),
                    "state-url" : str(playerStateName)
                }
                payload = json.dumps(payload)
                client.reply(name, payload)
            if name == playerInfoName:
                payload = json.dumps(str(self.players))
                client.reply(name, payload)
            if playerStateName in name:
                payload = json.loads(data)
                player = payload["username"]
                shipNumber = payload["ship-number"]
                state = self.get_player_state(player, 0)
                payload = json.dumps(state)
                client.reply(name, payload)
            if playerConnectName in name:
                payload = json.loads(data)
                username = payload["username"]
                ipAddress = payload["ip"]
                port = int(payload["port"])
                teamplayer = int(payload["teamplayer"])
                numberOfShips = int(payload["number-of-ships"])

                payload = json.dumps({ "result" : "OK" })
                client.reply(name, payload)

                # Configure a link and route back to the client
                name, data = createAddLinkMessage(ipAddress, port, username)
                client.push(name, data)
                name, data = createAddRouteMessage("lci:/tutorial/" + username, username)
                client.push(name, data)

                self.add_player(username, numberOfShips, ipAddress, port, teamplayer)
                print >> sys.stderr, "Adding player: " + username
Esempio n. 2
0
class GameClient(object):
    def __init__(self, username):
        self.ccnxClient = CCNxClient()
        self.username = username

    #@Remove
    def init(self):
        self.connectUri = "lci:/tutorial/game/connect"
        self.personalPrefix = "lci:/tutorial/" + self.username
        self.actionPrefix = "lci:/tutorial/" + self.username + "/action"
        self.statePrefix = "lci:/tutorial/game/players/state/" + self.username

    #@Remove
    def connect(self):
        payload = {
            "ip": "localhost",
            "port": 9695,
            "username": self.username,
            "teamplayer": 0,
            "number-of-ships": 1
        }
        self.ccnxClient.get(self.connectUri,
                            json.dumps(payload))  # consume the result

    def run(self):
        listening = self.ccnxClient.listen(self.personalPrefix)
        while listening:
            name, data = self.ccnxClient.receive()

            if name == None:
                continue

            if "action" in name:
                self.display_state()
                self.take_action(name)
                listening = self.display_state()

    #@Remove
    def get_state(self, ship=0):
        payload = {
            "username": self.username,
            "ship-number": ship,
        }
        data = self.ccnxClient.get(self.statePrefix, json.dumps(payload))
        while data == None:
            data = self.ccnxClient.get(self.statePrefix, json.dumps(payload))
        state = json.loads(data)
        return state

    def display_state(self, ship=0):
        state = self.get_state(ship)
        if state["gameover"] == 1:
            print "Game over!"
            return False
        else:
            table = state_to_string(state)
            print table
            return True

    def get_input(self):
        action = str(raw_input('ACTION: '))
        x = int(input('ROW: '))
        y = int(input('COL: '))
        # ship = int(input('ship: '))
        return (action, x, y, 0)

    #@Remove
    def take_action(self, name):
        (action, x, y, ship) = self.get_input()
        params = {"x": x, "y": y, "ship-number": ship}
        response = {
            "username": self.username,
            "action": action,
            "params": params
        }
        payload = json.dumps(response)
        self.ccnxClient.reply(name, payload)
Esempio n. 3
0
stream_ids = tls.get_credentials_file()['stream_ids']
stream_id = stream_ids[0]

stream = Stream(token=stream_id, maxpoints=80)

dataTrace = Scatter(x=[], y=[], mode='lines+markers', stream=stream)

data = Data([dataTrace])
layout = Layout(title='Time Series')

fig = Figure(data=data, layout=layout)
unique_url = py.plot(fig, filename='CCNxIOT-Collector')

s = py.Stream(stream_id)
s.open()

client = CCNxClient()
client.listen("lci:/tutorial/iot/collector")
while True:
    try:
        name, data = client.receive()
        print name, data
        y = int(name.split("/")[-1])
        x = datetime.datetime.now()
        s.write(dict(x=x, y=y))
        print "writing %s" % (str(dict(x = x, y = y)))
        client.reply(name, "OK")
    except:
        pass
s.close()
Esempio n. 4
0
stream_ids = tls.get_credentials_file()['stream_ids']
stream_id = stream_ids[0]

stream = Stream(token=stream_id, maxpoints=80)

dataTrace = Scatter(x=[], y=[], mode='lines+markers', stream=stream)

data = Data([dataTrace])
layout = Layout(title='Time Series')

fig = Figure(data=data, layout=layout)
unique_url = py.plot(fig, filename='CCNxIOT-Collector')

s = py.Stream(stream_id)
s.open()

client = CCNxClient()
client.listen("lci:/tutorial/iot/collector")
while True:
    try:
        name, data = client.receive()
        print name, data
        y = int(name.split("/")[-1])
        x = datetime.datetime.now()
        s.write(dict(x=x, y=y))
        print "writing %s" % (str(dict(x=x, y=y)))
        client.reply(name, "OK")
    except:
        pass
s.close()
Esempio n. 5
0
class GameClient(object):
    def __init__(self, username):
        self.ccnxClient = CCNxClient()
        self.username = username

    #@Remove
    def init(self):
        self.connectUri = "lci:/tutorial/game/connect"
        self.personalPrefix = "lci:/tutorial/" + self.username
        self.actionPrefix = "lci:/tutorial/" + self.username + "/action"
        self.statePrefix = "lci:/tutorial/game/players/state/" + self.username

    #@Remove
    def connect(self):
        payload = {
            "ip" : "localhost",
            "port" : 9695,
            "username" : self.username,
            "teamplayer" : 0,
            "number-of-ships" : 1
        }
        self.ccnxClient.get(self.connectUri, json.dumps(payload)) # consume the result

    def run(self):
        listening = self.ccnxClient.listen(self.personalPrefix)
        while listening:
            name, data = self.ccnxClient.receive()

            if name == None:
                continue

            if "action" in name:
                self.display_state()
                self.take_action(name)
                listening = self.display_state()

    #@Remove
    def get_state(self, ship = 0):
        payload = {
            "username" : self.username,
            "ship-number" : ship,
        }
        data = self.ccnxClient.get(self.statePrefix, json.dumps(payload))
        while data == None:
            data = self.ccnxClient.get(self.statePrefix, json.dumps(payload))
        state = json.loads(data)
        return state

    def display_state(self, ship = 0):
        state = self.get_state(ship)
        if state["gameover"] == 1:
            print "Game over!"
            return False
        else:
            table = state_to_string(state)
            print table
            return True

    def get_input(self):
        action = str(raw_input('ACTION: '))
        x = int(input('ROW: '))
        y = int(input('COL: '))
        # ship = int(input('ship: '))
        return (action, x, y, 0)

    #@Remove
    def take_action(self, name):
        (action, x, y, ship) = self.get_input()
        params = {"x": x, "y": y, "ship-number": ship}
        response = { "username" : self.username, "action" : action, "params" : params }
        payload = json.dumps(response)
        self.ccnxClient.reply(name, payload)