connection and disconnection management
This commit is contained in:
parent
2f688dab5c
commit
fe8b6c95c6
1 changed files with 40 additions and 35 deletions
69
sat.tac
69
sat.tac
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue