| OLD | NEW |
| (Empty) |
| 1 # Copyright (c) 2001-2008 Twisted Matrix Laboratories. | |
| 2 # See LICENSE for details. | |
| 3 | |
| 4 """ | |
| 5 Public Jabber Interfaces. | |
| 6 """ | |
| 7 | |
| 8 from zope.interface import Attribute, Interface | |
| 9 | |
| 10 class IInitializer(Interface): | |
| 11 """ | |
| 12 Interface for XML stream initializers. | |
| 13 | |
| 14 Initializers perform a step in getting the XML stream ready to be | |
| 15 used for the exchange of XML stanzas. | |
| 16 """ | |
| 17 | |
| 18 | |
| 19 | |
| 20 class IInitiatingInitializer(IInitializer): | |
| 21 """ | |
| 22 Interface for XML stream initializers for the initiating entity. | |
| 23 """ | |
| 24 | |
| 25 xmlstream = Attribute("""The associated XML stream""") | |
| 26 | |
| 27 def initialize(): | |
| 28 """ | |
| 29 Initiate the initialization step. | |
| 30 | |
| 31 May return a deferred when the initialization is done asynchronously. | |
| 32 """ | |
| 33 | |
| 34 | |
| 35 | |
| 36 class IIQResponseTracker(Interface): | |
| 37 """ | |
| 38 IQ response tracker interface. | |
| 39 | |
| 40 The XMPP stanza C{iq} has a request-response nature that fits | |
| 41 naturally with deferreds. You send out a request and when the response | |
| 42 comes back a deferred is fired. | |
| 43 | |
| 44 The L{IQ} class implements a C{send} method that returns a deferred. This | |
| 45 deferred is put in a dictionary that is kept in an L{XmlStream} object, | |
| 46 keyed by the request stanzas C{id} attribute. | |
| 47 | |
| 48 An object providing this interface (usually an instance of L{XmlStream}), | |
| 49 keeps the said dictionary and sets observers on the iq stanzas of type | |
| 50 C{result} and C{error} and lets the callback fire the associated deferred. | |
| 51 """ | |
| 52 iqDeferreds = Attribute("Dictionary of deferreds waiting for an iq " | |
| 53 "response") | |
| 54 | |
| 55 | |
| 56 | |
| 57 class IXMPPHandler(Interface): | |
| 58 """ | |
| 59 Interface for XMPP protocol handlers. | |
| 60 | |
| 61 Objects that provide this interface can be added to a stream manager to | |
| 62 handle of (part of) an XMPP extension protocol. | |
| 63 """ | |
| 64 | |
| 65 parent = Attribute("""XML stream manager for this handler""") | |
| 66 xmlstream = Attribute("""The managed XML stream""") | |
| 67 | |
| 68 def setHandlerParent(parent): | |
| 69 """ | |
| 70 Set the parent of the handler. | |
| 71 | |
| 72 @type parent: L{IXMPPHandlerCollection} | |
| 73 """ | |
| 74 | |
| 75 | |
| 76 def disownHandlerParent(parent): | |
| 77 """ | |
| 78 Remove the parent of the handler. | |
| 79 | |
| 80 @type parent: L{IXMPPHandlerCollection} | |
| 81 """ | |
| 82 | |
| 83 | |
| 84 def makeConnection(xs): | |
| 85 """ | |
| 86 A connection over the underlying transport of the XML stream has been | |
| 87 established. | |
| 88 | |
| 89 At this point, no traffic has been exchanged over the XML stream | |
| 90 given in C{xs}. | |
| 91 | |
| 92 This should setup L{xmlstream} and call L{connectionMade}. | |
| 93 | |
| 94 @type xs: L{XmlStream<twisted.words.protocols.jabber.XmlStream>} | |
| 95 """ | |
| 96 | |
| 97 | |
| 98 def connectionMade(): | |
| 99 """ | |
| 100 Called after a connection has been established. | |
| 101 | |
| 102 This method can be used to change properties of the XML Stream, its | |
| 103 authenticator or the stream manager prior to stream initialization | |
| 104 (including authentication). | |
| 105 """ | |
| 106 | |
| 107 | |
| 108 def connectionInitialized(): | |
| 109 """ | |
| 110 The XML stream has been initialized. | |
| 111 | |
| 112 At this point, authentication was successful, and XML stanzas can be | |
| 113 exchanged over the XML stream L{xmlstream}. This method can be | |
| 114 used to setup observers for incoming stanzas. | |
| 115 """ | |
| 116 | |
| 117 | |
| 118 def connectionLost(reason): | |
| 119 """ | |
| 120 The XML stream has been closed. | |
| 121 | |
| 122 Subsequent use of L{parent.send} will result in data being queued | |
| 123 until a new connection has been established. | |
| 124 | |
| 125 @type reason: L{twisted.python.failure.Failure} | |
| 126 """ | |
| 127 | |
| 128 | |
| 129 | |
| 130 class IXMPPHandlerCollection(Interface): | |
| 131 """ | |
| 132 Collection of handlers. | |
| 133 | |
| 134 Contain several handlers and manage their connection. | |
| 135 """ | |
| 136 | |
| 137 def __iter__(): | |
| 138 """ | |
| 139 Get an iterator over all child handlers. | |
| 140 """ | |
| 141 | |
| 142 | |
| 143 def addHandler(handler): | |
| 144 """ | |
| 145 Add a child handler. | |
| 146 | |
| 147 @type handler: L{IXMPPHandler} | |
| 148 """ | |
| 149 | |
| 150 | |
| 151 def removeHandler(handler): | |
| 152 """ | |
| 153 Remove a child handler. | |
| 154 | |
| 155 @type handler: L{IXMPPHandler} | |
| 156 """ | |
| 157 | |
| 158 | |
| 159 | |
| 160 class IService(Interface): | |
| 161 """ | |
| 162 External server-side component service interface. | |
| 163 | |
| 164 Services that provide this interface can be added to L{ServiceManager} to | |
| 165 implement (part of) the functionality of the server-side component. | |
| 166 """ | |
| 167 | |
| 168 def componentConnected(xs): | |
| 169 """ | |
| 170 Parent component has established a connection. | |
| 171 | |
| 172 At this point, authentication was succesful, and XML stanzas | |
| 173 can be exchanged over the XML stream L{xs}. This method can be used | |
| 174 to setup observers for incoming stanzas. | |
| 175 | |
| 176 @param xs: XML Stream that represents the established connection. | |
| 177 @type xs: L{xmlstream.XmlStream} | |
| 178 """ | |
| 179 | |
| 180 | |
| 181 def componentDisconnected(): | |
| 182 """ | |
| 183 Parent component has lost the connection to the Jabber server. | |
| 184 | |
| 185 Subsequent use of C{self.parent.send} will result in data being | |
| 186 queued until a new connection has been established. | |
| 187 """ | |
| 188 | |
| 189 | |
| 190 def transportConnected(xs): | |
| 191 """ | |
| 192 Parent component has established a connection over the underlying | |
| 193 transport. | |
| 194 | |
| 195 At this point, no traffic has been exchanged over the XML stream. This | |
| 196 method can be used to change properties of the XML Stream (in L{xs}), | |
| 197 the service manager or it's authenticator prior to stream | |
| 198 initialization (including authentication). | |
| 199 """ | |
| OLD | NEW |