Profiling added.
6 def help(socket, client):
7 socket.sendto("\n".join([key + ": " + value[1]
8 for key, value in commands.iteritems()]) + "\n", client)
10 def createModel(socket, client, (name,)):
11 model.createModel(name)
12 socket.sendto("model %s created\n" % name, client)
14 def deleteModel(socket, client, (name,)):
15 if model.deleteModel(name):
16 socket.sendto("model %s deleted\n" % name, client)
18 def saveModel(socket, client, (name,)):
19 model = lookupModel(socket, client, name)
21 pickle.dump(model, open(name, "w"))
22 socket.sendto("model %s saved\n" % name, client)
24 def loadModel(socket, client, (name,)):
25 model.addModel(pickle.load(open(name, "r")))
26 socket.sendto("model %s loaded\n" % name, client)
29 def lookupModel(socket, client, name):
30 if name not in model.models:
31 socket.sendto("model %s not found\n" % name, client)
34 return model.models[name]
36 def addObserver(socket, client, (modelName, eventType)):
37 model = lookupModel(socket, client, modelName)
39 model.register(socket, client, eventType)
40 socket.sendto("observer for event type %s added: " % eventType
41 + str(client) + "\n", client)
43 def setResolution(socket, client, (modelName, x, y)):
44 model = lookupModel(socket, client, modelName)
46 model.setResolution(int(x), int(y))
47 socket.sendto("model %s resolution set to %s, %s\n" %
48 (modelName, x, y), client)
50 def setRange(socket, client, (modelName, begin, end)):
51 model = lookupModel(socket, client, modelName)
53 model.setRange(complex(begin), complex(end))
54 socket.sendto("model %s range set to %s, %s\n" %
55 (modelName, begin, end), client)
57 def update(socket, client, (modelName, iterations)):
58 model = lookupModel(socket, client, modelName)
60 model.update(int(iterations))
61 socket.sendto("model %s updated with max %s iterations\n"
62 % (modelName, iterations), client)
64 commands = {"help": (help, "help"),
65 "create model": (createModel, "creates a new model"),
66 "delete model": (deleteModel, "deletes a model"),
67 "save model": (saveModel, "makes a persistent copy of the model"),
68 "load model": (loadModel, "loads a persistent model"),
69 "set resolution": (setResolution, "sets the model resolution"),
70 "set range": (setRange, "sets the model range"),
71 "update": (update, "updates the model data"),
72 "add observer": (addObserver, "adds an observer to a model's events")}