Example #1
0
 def __init__(self, service, *path, **conf):
     self.__dict__["service"] = service
     self.__dict__["path"] = tuple(path)
     
     for key, value in conf.items():
         try:
             value  = serialize.load(serialize.dump(value))
         except serialize.UnregisteredType:
             raise SessionError("can not serialize key %r value %r" % 
                                (key, value))
         conf[key] = value
     self.__dict__["_conf"] = frozenset(conf.items())
Example #2
0
    def _start(self, jid, service_id, element):
        service = self.services.get(service_id, None)
        if service is None:
            raise SessionError("Service '%s' not available" % service_id)

        path = None
        for child in element.children("path").children():
            path = serialize.load(child)
            break

        for child in element.children("config").children():
            conf = serialize.load(child)
            break
        else:
            raise SessionError("Did not get session configuration")

        session_id = uuid.uuid4().hex
        session = service.open_session(path, conf)

        sessions = self.jids.setdefault(jid, dict())
        sessions[session_id] = session
        session | self._catch(jid, session_id)
        return Element("start", xmlns=SERVICE_NS, id=session_id)