source:
ralphm-patches/deferred_xmlstream_factory.patch
@
12:fc40892815eb
Last change on this file since 12:fc40892815eb was 6:46e82ac33f4a, checked in by Ralph Meijer <ralphm@…>, 13 years ago | |
---|---|
File size: 4.4 KB |
-
wokkel/client.py
diff -r 9dd177aaa50c wokkel/client.py
a b 11 11 """ 12 12 13 13 from twisted.application import service 14 from twisted.internet import defer, protocol,reactor14 from twisted.internet import reactor 15 15 from twisted.names.srvconnect import SRVConnector 16 16 from twisted.words.protocols.jabber import client, sasl, xmlstream 17 17 18 try: 19 from twisted.words.xish.xmlstream import BootstrapMixin 20 except ImportError: 21 from wokkel.compat import BootstrapMixin 22 23 from wokkel.subprotocols import StreamManager, XMPPHandler 18 from wokkel import generic 19 from wokkel.subprotocols import StreamManager 24 20 25 21 class CheckAuthInitializer(object): 26 22 """ … … 127 123 return c 128 124 129 125 130 class DeferredClientFactory(BootstrapMixin, protocol.ClientFactory): 131 protocol = xmlstream.XmlStream 126 class DeferredClientFactory(generic.DeferredXmlStreamFactory): 132 127 133 128 def __init__(self, jid, password): 134 BootstrapMixin.__init__(self) 135 136 self.jid = jid 137 self.password = password 138 139 deferred = defer.Deferred() 140 self.deferred = deferred 141 self.addBootstrap(xmlstream.INIT_FAILED_EVENT, deferred.errback) 142 143 class ConnectionInitializedHandler(XMPPHandler): 144 def connectionInitialized(self): 145 deferred.callback(None) 146 147 self.streamManager = StreamManager(self) 148 self.addHandler(ConnectionInitializedHandler()) 149 150 151 def buildProtocol(self, addr): 152 """ 153 Create an instance of XmlStream. 154 155 A new authenticator instance will be created and passed to the new 156 XmlStream. Registered bootstrap event observers are installed as well. 157 """ 158 self.authenticator = client.XMPPAuthenticator(self.jid, self.password) 159 xs = self.protocol(self.authenticator) 160 xs.factory = self 161 self.installBootstraps(xs) 162 return xs 163 164 165 def clientConnectionFailed(self, connector, reason): 166 self.deferred.errback(reason) 129 authenticator = client.XMPPAuthenticator(jid, password) 130 generic.DeferredXmlStreamFactory.__init__(self, authenticator) 167 131 168 132 169 133 def addHandler(self, handler): … … 180 144 self.streamManager.removeHandler(handler) 181 145 182 146 147 183 148 def clientCreator(factory): 184 domain = factory. jid.host149 domain = factory.authenticator.jid.host 185 150 c = SRVConnector(reactor, 'xmpp-client', domain, factory) 186 151 c.connect() 187 152 return factory.deferred -
wokkel/generic.py
diff -r 9dd177aaa50c wokkel/generic.py
a b 9 9 10 10 from zope.interface import implements 11 11 12 from twisted.internet import defer 13 from twisted.words.protocols.jabber import error 12 from twisted.internet import defer, protocol 13 from twisted.words.protocols.jabber import error, xmlstream 14 14 from twisted.words.protocols.jabber.xmlstream import toResponse 15 15 from twisted.words.xish import domish, utility 16 16 17 try: 18 from twisted.words.xish.xmlstream import BootstrapMixin 19 except ImportError: 20 from wokkel.compat import BootstrapMixin 21 17 22 from wokkel import disco 18 23 from wokkel.iwokkel import IDisco 19 24 from wokkel.subprotocols import XMPPHandler … … 155 160 self.sink = utility.EventDispatcher() 156 161 self.source.send = lambda obj: self.sink.dispatch(obj) 157 162 self.sink.send = lambda obj: self.source.dispatch(obj) 163 164 165 class DeferredXmlStreamFactory(BootstrapMixin, protocol.ClientFactory): 166 protocol = xmlstream.XmlStream 167 168 def __init__(self, authenticator): 169 BootstrapMixin.__init__(self) 170 171 self.authenticator = authenticator 172 173 deferred = defer.Deferred() 174 self.deferred = deferred 175 self.addBootstrap(xmlstream.STREAM_AUTHD_EVENT, self.deferred.callback) 176 self.addBootstrap(xmlstream.INIT_FAILED_EVENT, deferred.errback) 177 178 179 def buildProtocol(self, addr): 180 """ 181 Create an instance of XmlStream. 182 183 A new authenticator instance will be created and passed to the new 184 XmlStream. Registered bootstrap event observers are installed as well. 185 """ 186 xs = self.protocol(self.authenticator) 187 xs.factory = self 188 self.installBootstraps(xs) 189 return xs 190 191 192 def clientConnectionFailed(self, connector, reason): 193 self.deferred.errback(reason)
Note: See TracBrowser
for help on using the repository browser.