1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/com.py Sun Jun 13 00:18:09 2010 +0200
1.3 @@ -0,0 +1,72 @@
1.4 +import model
1.5 +import pickle
1.6 +
1.7 +commands = {}
1.8 +
1.9 +def help(socket, client):
1.10 + socket.sendto("\n".join([key + ": " + value[1]
1.11 + for key, value in commands.iteritems()]) + "\n", client)
1.12 +
1.13 +def createModel(socket, client, (name,)):
1.14 + model.createModel(name)
1.15 + socket.sendto("model %s created\n" % name, client)
1.16 +
1.17 +def deleteModel(socket, client, (name,)):
1.18 + if model.deleteModel(name):
1.19 + socket.sendto("model %s deleted\n" % name, client)
1.20 +
1.21 +def saveModel(socket, client, (name,)):
1.22 + model = lookupModel(socket, client, name)
1.23 + if model:
1.24 + pickle.dump(model, open(name, "w"))
1.25 + socket.sendto("model %s saved\n" % name, client)
1.26 +
1.27 +def loadModel(socket, client, (name,)):
1.28 + model.addModel(pickle.load(open(name, "r")))
1.29 + socket.sendto("model %s loaded\n" % name, client)
1.30 +
1.31 +
1.32 +def lookupModel(socket, client, name):
1.33 + if name not in model.models:
1.34 + socket.sendto("model %s not found\n" % name, client)
1.35 + return None
1.36 + else:
1.37 + return model.models[name]
1.38 +
1.39 +def addObserver(socket, client, (modelName, eventType)):
1.40 + model = lookupModel(socket, client, modelName)
1.41 + if model:
1.42 + model.register(socket, client, eventType)
1.43 + socket.sendto("observer for event type %s added: " % eventType
1.44 + + str(client) + "\n", client)
1.45 +
1.46 +def setResolution(socket, client, (modelName, x, y)):
1.47 + model = lookupModel(socket, client, modelName)
1.48 + if model:
1.49 + model.setResolution(int(x), int(y))
1.50 + socket.sendto("model %s resolution set to %s, %s\n" %
1.51 + (modelName, x, y), client)
1.52 +
1.53 +def setRange(socket, client, (modelName, begin, end)):
1.54 + model = lookupModel(socket, client, modelName)
1.55 + if model:
1.56 + model.setRange(complex(begin), complex(end))
1.57 + socket.sendto("model %s range set to %s, %s\n" %
1.58 + (modelName, begin, end), client)
1.59 +
1.60 +def update(socket, client, (modelName, iterations)):
1.61 + model = lookupModel(socket, client, modelName)
1.62 + if model:
1.63 + model.update(int(iterations))
1.64 + socket.sendto("model %s updated with max %s iterations\n"
1.65 + % (modelName, iterations), client)
1.66 +
1.67 +commands = {"help": (help, "help"),
1.68 + "create model": (createModel, "creates a new model"),
1.69 + "delete model": (deleteModel, "deletes a model"),
1.70 + "save model": (saveModel, "makes a persistent copy of the model"),
1.71 + "load model": (loadModel, "loads a persistent model"),
1.72 + "set resolution": (setResolution, "sets the model resolution"),
1.73 + "set range": (setRange, "sets the model range"),
1.74 + "update": (update, "updates the model data"),
1.75 + "add observer": (addObserver, "adds an observer to a model's events")}