def set_attacher(self, attacher, myreactor): """ Provide an :class:`txtorcon.interface.IStreamAttacher to associate streams to circuits. This won't get turned on until after bootstrapping is completed. ('__LeaveStreamsUnattached' needs to be set to '1' and the existing circuits list needs to be populated). """ react = IReactorCore(myreactor) if attacher: self.attacher = IStreamAttacher(attacher) else: self.attacher = None if self.attacher is None: self.undo_attacher() if self.cleanup: react.removeSystemEventTrigger(self.cleanup) self.cleanup = None else: self.protocol.set_conf("__LeaveStreamsUnattached", "1") self.cleanup = react.addSystemEventTrigger('before', 'shutdown', self.undo_attacher) return None
def set_attacher(self, attacher, myreactor): """ Provide an :class:`txtorcon.interface.IStreamAttacher` to associate streams to circuits. This won't get turned on until after bootstrapping is completed. ('__LeaveStreamsUnattached' needs to be set to '1' and the existing circuits list needs to be populated). """ react = IReactorCore(myreactor) if attacher: self.attacher = IStreamAttacher(attacher) else: self.attacher = None if self.attacher is None: self.undo_attacher() if self.cleanup: react.removeSystemEventTrigger(self.cleanup) self.cleanup = None else: self.protocol.set_conf("__LeaveStreamsUnattached", "1") self.cleanup = react.addSystemEventTrigger('before', 'shutdown', self.undo_attacher) return None
def set_attacher(self, attacher, myreactor): """ Provide an :class:`txtorcon.interface.IStreamAttacher` to associate streams to circuits. You are Strongly Encouraged to **not** use this API directly, and instead use :meth:`txtorcon.Circuit.stream_via` or :meth:`txtorcon.Circuit.web_agent` instead. If you do need to use this API, it's an error if you call either of the other two methods. This won't get turned on until after bootstrapping is completed. ('__LeaveStreamsUnattached' needs to be set to '1' and the existing circuits list needs to be populated). """ react = IReactorCore(myreactor) if attacher: if self._attacher is attacher: return if self._attacher is not None: raise RuntimeError( "set_attacher called but we already have an attacher") self._attacher = IStreamAttacher(attacher) else: self._attacher = None if self._attacher is None: d = self.undo_attacher() if self._cleanup: react.removeSystemEventTrigger(self._cleanup) self._cleanup = None else: d = self.protocol.set_conf("__LeaveStreamsUnattached", "1") self._cleanup = react.addSystemEventTrigger( 'before', 'shutdown', self.undo_attacher, ) return d
def set_attacher(self, attacher, myreactor): """ Provide an :class:`txtorcon.interface.IStreamAttacher` to associate streams to circuits. You are Strongly Encouraged to **not** use this API directly, and instead use :meth:`txtorcon.Circuit.stream_via` or :meth:`txtorcon.Circuit.web_agent` instead. If you do need to use this API, it's an error if you call either of the other two methods. This won't get turned on until after bootstrapping is completed. ('__LeaveStreamsUnattached' needs to be set to '1' and the existing circuits list needs to be populated). """ react = IReactorCore(myreactor) if attacher: if self._attacher is attacher: return if self._attacher is not None: raise RuntimeError( "set_attacher called but we already have an attacher" ) self._attacher = IStreamAttacher(attacher) else: self._attacher = None if self._attacher is None: d = self.undo_attacher() if self._cleanup: react.removeSystemEventTrigger(self._cleanup) self._cleanup = None else: d = self.protocol.set_conf("__LeaveStreamsUnattached", "1") self._cleanup = react.addSystemEventTrigger( 'before', 'shutdown', self.undo_attacher, ) return d