summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sleekxmpp/plugins/xep_0047.py52
-rw-r--r--sleekxmpp/xmlstream/xmlstream.py13
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