def register_actor_descriptions(self, descriptions): for desc in descriptions["types"].values(): type_name = desc["typeName"] category = desc["category"] if category == "actor": t = get_type(desc["typeName"]) if isinstance(t, ActorType): concrete = t.cls elif isinstance(t, PlaceholderType) and t.concrete: concrete = t.concrete.cls else: concrete = type( str(type_name), (Front,), {"typeName": type_name}) concrete.implement_actor(desc) continue if type_exists(type_name): continue if category == "dict": add_type(DictType(type_name, desc["specializations"])) self.on_connected.emit(self)
def register_actor_descriptions(self, descriptions): for desc in descriptions["types"].values(): type_name = desc["typeName"] category = desc["category"] if category == "actor": t = get_type(desc["typeName"]) if isinstance(t, ActorType): concrete = t.cls elif isinstance(t, PlaceholderType) and t.concrete: concrete = t.concrete.cls else: concrete = type(str(type_name), (Front, ), {"typeName": type_name}) concrete.implement_actor(desc) continue if type_exists(type_name): continue if category == "dict": add_type(DictType(type_name, desc["specializations"])) self.on_connected.emit(self)
def implement_actor(cls, actor_desc): if isinstance(actor_desc, str) or isinstance(actor_desc, unicode): actor_desc = json.loads(s) if "typeName" in actor_desc: add_type(ActorType(actor_desc["typeName"], cls)) for method in actor_desc["methods"]: cls.implement_method(method) if "events" in actor_desc: cls.events = {} for event_name in actor_desc["events"]: cls.implement_event(event_name, actor_desc["events"][event_name])
""" Front specializations """ from protocol import Front, Request from marshallers import get_type, add_type, DictType add_type(DictType("tablist", { "selected": "number", "tabs": "array:tab" })) class RootFront(Front): actor_desc = { "typeName": "root", "methods": [{ "name": "echo", "request": { "string": { "_arg": 0, "type": "string" } }, "response": { "string": { "_retval": "string" } } }, { "name": "listTabs", "request": {}, "response": { "_retval": "tablist" } }, {
""" Front specializations """ from protocol import Front, Request from marshallers import get_type, add_type, DictType add_type(DictType("tablist", {"selected": "number", "tabs": "array:tab"})) class RootFront(Front): actor_desc = { "typeName": "root", "methods": [{ "name": "echo", "request": { "string": { "_arg": 0, "type": "string" } }, "response": { "string": { "_retval": "string" } } }, { "name": "listTabs", "request": {}, "response": {