예제 #1
0
    def play(self):
        client = CCNxClient(async = True)
        while not self.is_over():
            for player in self.players.keys():
                print >> sys.stderr, "Asking " + str(player) + " for move..."
                playerActionName = "lci:/tutorial/" + str(player) + "/action"
                data = client.get_async(playerActionName, None, 5)
                if data != None:
                    payload = json.loads(data)
                    user = payload["username"]
                    action = payload["action"]
                    params = payload["params"]

                    print >> sys.stderr, user, params

                    if action == "move":
                        self.parse_move(user, params)
                    elif action == "shoot":
                        self.parse_shoot(user, params)

                    print self.board

        for player in self.players:
            gameOverName = "lci:/tutorial/" + str(player) + "/gameover"
            client.push(gameOverName, None)
        self.isDone = True
예제 #2
0
    def run(self):
        client = CCNxClient()

        listening = client.listen(self.prefix)
        print "Lisening on %s" % (self.prefix)

        while listening:
            name, data = client.receive_raw()

            #@REMOVE
            schemaName = self.prefix + "/schema"
            if schemaName in str(name):
                client.reply(str(name), self.build_schema)
            else:
                url = "http://" + str(name[1].value)
                path = "/".join(map(lambda ns : str(ns.value), name[2:]))
                if len(path) > 0:
                    url = url + "/" + path

                print "Fetching %s" % (url)
                content = urllib2.urlopen(url).read()

                client.reply(str(name), content)
예제 #3
0
 def __init__(self, root):
     self.root = root
     self.files = {}
     self.handles = {}
     self.descriptor_seq = 0
     self.client = CCNxClient()
예제 #4
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
예제 #5
0
def main(uris):
    fail_fast()
    client = CCNxClient()
    for uri in uris:
        data = client.get(uri, "")
        print data
예제 #6
0
 def __init__(self, username):
     self.ccnxClient = CCNxClient()
     self.username = username
예제 #7
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)
예제 #8
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()
예제 #9
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()
예제 #10
0
 def __init__(self, username):
     self.ccnxClient = CCNxClient()
     self.username = username
예제 #11
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)
예제 #12
0
 def __init__(self, prefix):
     self.client = CCNxClient()
     self.prefix = prefix
     if len(prefix) == 0:
         self.prefix = "lci:/gateway"
예제 #13
0
def main(uris):
    fail_fast()
    client = CCNxClient()
    for uri in uris:
        data = client.get(uri, "")
        print data