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