connection and disconnection management

This commit is contained in:
Goffi 2009-10-23 17:04:22 +02:00
commit fe8b6c95c6

69
sat.tac
View file

@ -98,11 +98,21 @@ class SAT:
self.plugins[plug_info['import_name']] = getattr(mod, plug_info['main'])(self)
def connect(self):
if (self.connected):
info("already connected !")
return
print "connecting..."
reactor.connectTCP(self.memory.getParamV("Server", "Connection"), 5222, self.factory)
self.connectionStatus="online" #TODO: check if connection is OK
self.connected=True #TODO: use startedConnecting and clientConnectionLost of XMPPClientFactory
def disconnect(self):
if (not self.connected):
info("not connected !")
return
info("Disconnecting...")
self.factory.stopTrying()
if self.xmlstream:
self.xmlstream.sendFooter()
def getService(self):
print "GetService !"
"""if (self.connected):
@ -111,23 +121,11 @@ class SAT:
info("Getting service...")
self.me = jid.JID(self.memory.getParamV("JabberID", "Connection"))
self.factory = client.XMPPClientFactory(self.me, self.memory.getParamV("Password", "Connection"))
self.factory.clientConnectionLost = self.connectionLost
self.factory.addBootstrap(xmlstream.STREAM_AUTHD_EVENT,self.authd)
self.factory.addBootstrap(xmlstream.INIT_FAILED_EVENT,self.failed)
self.connectionStatus="online" #TODO: check if connection is OK
self.connected=True #TODO: use startedConnecting and clientConnectionLost of XMPPClientFactory
return internet.TCPClient(self.memory.getParamV("Server", "Connection"), 5222, self.factory)
def disconnect(self):
if (not self.connected):
info("not connected !")
return
info("Disconnecting...")
self.factory.stopTrying()
if self.xmlstream:
self.xmlstream.sendFooter()
self.connectionStatus="offline" #TODO: check if connection is OK
self.connected=False #TODO: use startedConnecting and clientConnectionLost of XMPPClientFactory
def run(self):
debug("running app")
reactor.run()
@ -137,26 +135,33 @@ class SAT:
reactor.stop()
def authd(self,xmlstream):
self.xmlstream=xmlstream
roster=client.IQ(xmlstream,'get')
roster.addElement(('jabber:iq:roster', 'query'))
roster.addCallback(self.rosterCb)
roster.send()
debug("server = %s",self.memory.getParamV("Server", "Connection"))
self.xmlstream=xmlstream
roster=client.IQ(xmlstream,'get')
roster.addElement(('jabber:iq:roster', 'query'))
roster.addCallback(self.rosterCb)
roster.send()
debug("server = %s",self.memory.getParamV("Server", "Connection"))
###FIXME: tmp disco ###
self.memory.registerFeature("http://jabber.org/protocol/disco#info")
self.disco(self.memory.getParamV("Server", "Connection"), self.serverDisco)
###FIXME: tmp disco ###
self.memory.registerFeature("http://jabber.org/protocol/disco#info")
self.disco(self.memory.getParamV("Server", "Connection"), self.serverDisco)
#we now send our presence status
self.setPresence(status="Online")
# add a callback for the messages
xmlstream.addObserver('/message', self.gotMessage)
xmlstream.addObserver('/presence', self.presenceCb)
xmlstream.addObserver("/iq[@type='set' or @type='get']", self.iqCb)
#reactor.callLater(2,self.sendFile,"goffi2@jabber.goffi.int/Psi", "/tmp/fakefile")
#we now send our presence status
self.setPresence(status="Online")
# add a callback for the messages
xmlstream.addObserver('/message', self.gotMessage)
xmlstream.addObserver('/presence', self.presenceCb)
xmlstream.addObserver("/iq[@type='set' or @type='get']", self.iqCb)
print "********** CONNECTED **********"
self.connected=True
#reactor.callLater(2,self.sendFile,"goffi2@jabber.goffi.int/Psi", "/tmp/fakefile")
def connectionLost(self, connector, unused_reason):
print "********** DISCONNECTED **********"
self.connected=False
def sendMessage(self,to,msg,type='chat'):
#FIXME: check validity of recipient