import rotor # import encrypt tools from EventObj import * from TagObj import * # I didn't define msgBroadcast and msgSendTag, because I don't # have yet a total obj list class MsgObj(EventObj, TagObj): "message handling class" # # Send event message to specific object # def msgSend(self, obj, msg): try: obj.newEvent('evtMessage', self, msg) except: pass # # Process message event. Only does anything if ok is 1 # def msgReceive(self, obj, msg): ok = 0 if not obj in self.filterList: ok = 1 for tag in self.filterTagList: if obj.tagHas(tag): ok = 0 break if ok == 1: # I didn't insert objs id's, yet print 'Got new msg: ' + msg + ' of object ' + obj.__doc__ # # Refuse messages from object 'obj' # def msgFilter(self, obj): self.filterList.append(obj) # # Refuse messages from objects with 'tag' # def msgFilterTag(self, tag): self.filterTagList.append(tag) # # Encrypt message using a numeric key # def msgEncrypt(self, msg, numKey): rt = rotor.newrotor('key', numKey) return rt.encrypt(msg) # # Decrypt message using a numeric key # def msgDecrypt(self, msg, numKey): rt = rotor.newrotor('key', numKey) return rt.decrypt(msg) # def __str__(self): # just to test return 'message object' # def __init__(self): # execution of super init methods EventObj.__init__(self) TagObj.__init__(self) # insert newMsg event into event list self.evtTable['evtMessage'] = (self.msgReceive, 2) # filter lists self.filterList = [] self.filterTagList = [] ########################## w = MsgObj() x = MsgObj() y = MsgObj() z = MsgObj() z.tagInsert('liar') # z is a liar y.msgFilterTag('liar') # y does not listen to liars y.msgFilter(w) # y does not listen to w print '='*40 w.msgSend(y, 'greetings') x.msgSend(y, 'hi object y') z.msgSend(y, 'another msg') while y.hasEvents(): y.forceEvent() msg = x.msgEncrypt('martha', 122) print y.msgDecrypt(msg, 122)