com.py
changeset 0 a99535269d60
child 2 b887ce19c300
     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")}