com.py
author Eugen Sawin <sawine@me73.com>
Sun, 13 Jun 2010 01:53:58 +0200
changeset 1 0ebb73fd094a
child 2 b887ce19c300
permissions -rw-r--r--
Profiling added.
sawine@0
     1
import model
sawine@0
     2
import pickle
sawine@0
     3
sawine@0
     4
commands = {}
sawine@0
     5
sawine@0
     6
def help(socket, client):
sawine@0
     7
	socket.sendto("\n".join([key + ": " + value[1] 
sawine@0
     8
		for key, value in commands.iteritems()]) + "\n", client)
sawine@0
     9
sawine@0
    10
def createModel(socket, client, (name,)):
sawine@0
    11
	model.createModel(name)
sawine@0
    12
	socket.sendto("model %s created\n" % name, client)
sawine@0
    13
	
sawine@0
    14
def deleteModel(socket, client, (name,)):
sawine@0
    15
	if model.deleteModel(name):
sawine@0
    16
		socket.sendto("model %s deleted\n" % name, client)
sawine@0
    17
		
sawine@0
    18
def saveModel(socket, client, (name,)):
sawine@0
    19
	model = lookupModel(socket, client, name)
sawine@0
    20
	if model:
sawine@0
    21
		pickle.dump(model, open(name, "w"))
sawine@0
    22
		socket.sendto("model %s saved\n" % name, client)
sawine@0
    23
		
sawine@0
    24
def loadModel(socket, client, (name,)):	
sawine@0
    25
	model.addModel(pickle.load(open(name, "r")))
sawine@0
    26
	socket.sendto("model %s loaded\n" % name, client)
sawine@0
    27
		
sawine@0
    28
		
sawine@0
    29
def lookupModel(socket, client, name):
sawine@0
    30
	if name not in model.models:
sawine@0
    31
		socket.sendto("model %s not found\n" % name, client)
sawine@0
    32
		return None
sawine@0
    33
	else:
sawine@0
    34
		return model.models[name]
sawine@0
    35
		
sawine@0
    36
def addObserver(socket, client, (modelName, eventType)):
sawine@0
    37
	model = lookupModel(socket, client, modelName)
sawine@0
    38
	if model:
sawine@0
    39
		model.register(socket, client, eventType)
sawine@0
    40
		socket.sendto("observer for event type %s added: " % eventType 
sawine@0
    41
			+ str(client) + "\n", client)
sawine@0
    42
		
sawine@0
    43
def setResolution(socket, client, (modelName, x, y)):
sawine@0
    44
	model = lookupModel(socket, client, modelName)
sawine@0
    45
	if model:
sawine@0
    46
		model.setResolution(int(x), int(y))
sawine@0
    47
		socket.sendto("model %s resolution set to %s, %s\n" % 
sawine@0
    48
			(modelName, x, y), client)
sawine@0
    49
			
sawine@0
    50
def setRange(socket, client, (modelName, begin, end)):
sawine@0
    51
	model = lookupModel(socket, client, modelName)
sawine@0
    52
	if model:
sawine@0
    53
		model.setRange(complex(begin), complex(end))
sawine@0
    54
		socket.sendto("model %s range set to %s, %s\n" % 
sawine@0
    55
			(modelName, begin, end), client)
sawine@0
    56
sawine@0
    57
def update(socket, client, (modelName, iterations)):
sawine@0
    58
	model = lookupModel(socket, client, modelName)
sawine@0
    59
	if model:
sawine@0
    60
		model.update(int(iterations))
sawine@0
    61
		socket.sendto("model %s updated with max %s iterations\n" 
sawine@0
    62
			% (modelName, iterations), client)
sawine@0
    63
		
sawine@0
    64
commands = {"help": (help, "help"),
sawine@0
    65
	"create model": (createModel, "creates a new model"),
sawine@0
    66
	"delete model": (deleteModel, "deletes a model"),	
sawine@0
    67
	"save model": (saveModel, "makes a persistent copy of the model"),
sawine@0
    68
	"load model": (loadModel, "loads a persistent model"),
sawine@0
    69
	"set resolution": (setResolution, "sets the model resolution"),
sawine@0
    70
	"set range": (setRange, "sets the model range"),
sawine@0
    71
	"update": (update, "updates the model data"),
sawine@0
    72
	"add observer": (addObserver, "adds an observer to a model's events")}