def __getattr__(self, name): """ x.__getattr__('name') <==> x.name @return named attribute from EClientSocket object """ try: value = getattr(self.client, name) except (AttributeError, ): raise if name not in self.clientMethodNames: return value return value typeName = toTypeName(name) preName, postName = name + 'Pre', name + 'Post' preType, postType = registry[preName], registry[postName] for item in registry: print item @wraps(value) def wrapperMethod(*args): mapping = dict(zip(preType.__slots__, args)) results = self.dispatcher(preName, mapping) if not all(results): return # raise exception instead? result = value(*args) self.dispatcher(postName, mapping) return result # or results? return wrapperMethod
def buildMessageRegistry(seq, suffixes=[''], bases=(Message, )): """ Construct message types and add to given mapping. @param seq pairs of method (name, arguments) @param bases sequence of base classes for message types @return None """ for name, args in sorted(seq): for suffix in suffixes: typename = toTypeName(name) + suffix typens = {'__slots__': args, '__assoc__': name, 'typeName': name} msgtype = type(typename, bases, typens) if name in registry: registry[name] = registry[name] + (msgtype, ) else: registry[name] = (msgtype, )
def buildMessageRegistry(seq, suffixes=[''], bases=(Message, )): """ Construct message types and add to given mapping. @param seq pairs of method (name, arguments) @param bases sequence of base classes for message types @return None """ for name, args in sorted(seq): for suffix in suffixes: typename = toTypeName(name) + suffix typens = {'__slots__':args, '__assoc__':name, 'typeName':name} msgtype = type(typename, bases, typens) if name in registry: registry[name] = registry[name] + (msgtype, ) else: registry[name] = (msgtype, )