diff options
-rw-r--r-- | sleekxmpp/plugins/xep_0047.py | 52 | ||||
-rw-r--r-- | sleekxmpp/xmlstream/xmlstream.py | 13 |
2 files changed, 54 insertions, 11 deletions
diff --git a/sleekxmpp/plugins/xep_0047.py b/sleekxmpp/plugins/xep_0047.py new file mode 100644 index 00000000..beaadcdc --- /dev/null +++ b/sleekxmpp/plugins/xep_0047.py @@ -0,0 +1,52 @@ +''' +Created on Jul 1, 2010 + +@author: bbeggs +''' +from . import base +import logging +import threading +from xml.etree import cElementTree as ET + +class xep_0047(base.base_plugin): + ''' + In-band file transfer for xmpp. + + Both message and iq transfer is supported with message being attempted first. + ''' + + def plugin_init(self): + self.xep = 'xep-047' + self.description = 'in-band file transfer' + self.acceptTransfers = self.config.get('acceptTransfers', True) + self.saveDirectory = self.config.get('saveDirectory', '/tmp') + self.stanzaType = self.config.get('stanzaType', 'message') + self.maxSendThreads = self.config.get('maxSendThreads', 1) + self.maxReceiveThreads = self.config.get('maxReceiveThreads', 1) + + #thread setup + self.receiveThreads = {} #id:thread + self.sendThreads = {} + + #add handlers to listen for incoming requests + self.xmpp.add_handler("<iq><open xmlns='http://jabber.org/protocol/ibb' /></iq>", self._handleIncomingTransferRequest) + + def post_init(self): + self.post_inited = True + + + def sendFile(self, filePath, threaded=True): + #TODO use this method to send a file + pass + + def _handleIncomingTransferRequest(self, xml): + pass + +class receiverThread(threading.Thread): + def run(self): + pass + +class senderThread(threading.Thread): + def run(self): + pass + diff --git a/sleekxmpp/xmlstream/xmlstream.py b/sleekxmpp/xmlstream/xmlstream.py index a464da0d..88ec219c 100644 --- a/sleekxmpp/xmlstream/xmlstream.py +++ b/sleekxmpp/xmlstream/xmlstream.py @@ -226,7 +226,6 @@ class XMLStream(object): # TODO currently this will re-send a stream header if this exception occurs. # I don't think that's intended behavior. logging.warn('socket rcv timeout') - pass except RestartStream: logging.debug("Restarting stream...") continue # DON'T re-initialize the stream -- this exception is sent @@ -238,22 +237,16 @@ class XMLStream(object): except: logging.exception('Unexpected error in RCV thread') - # if the RCV socket is terminated for whatever reason, our only sane choice of action is an attempt - # to re-establish the connection. + # if the RCV socket is terminated for whatever reason (e.g. we reach this point of + # code,) our only sane choice of action is an attempt to re-establish the connection. if not self.quit.is_set(): logging.info( 'about to reconnect..........' ) - logging.info( 'about to reconnect..........' ) - logging.info( 'about to reconnect..........' ) - logging.info( 'about to reconnect..........' ) try: self.disconnect(reconnect=self.should_reconnect, error=True) except: logging.exception( "WTF disconnect!" ) logging.info( 'reconnect complete!' ) logging.info( 'reconnect complete!' ) - logging.info( 'reconnect complete!' ) - logging.info( 'reconnect complete!' ) - logging.info( 'reconnect complete!' ) logging.debug('Quitting Process thread') @@ -322,9 +315,7 @@ class XMLStream(object): return True def disconnect(self, reconnect=False, error=False): - logging.info('AAAAAAAAAAAAAAAAAAAAAAAA') with self.state.transition_ctx('connected','disconnected') as locked: - logging.info('BBBBBBBBBBBBBBBBBBBBBBBBBB') if not locked: logging.warning("Already disconnected.") return |