Changeset 199
- Timestamp:
- 06/26/02 10:06:03 (6 years ago)
- Files:
-
- trunk/RBJabber/RBJabber/JabberConnection.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBJabber/RBJabber/JabberConnection.py
r192 r199 115 115 self._SetDebug(fileIn, fileOut) 116 116 117 # Create the sendData buffer and lock 118 try: 119 self._sendData = '' 120 import threading 121 self._sendDataLock = threading.Lock() 122 except ImportError: 123 self._sendDataLock = None 124 117 125 # Create our socket 118 self._sendData = ''119 126 try: 120 127 self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) … … 160 167 Note: the xml is not checked for validity, but the Jabber Servers get 161 168 pretty upset when the data is invalid, and they tend to sever the socket.""" 162 self._sendData += xml 169 try: 170 if self._sendDataLock: self._sendDataLock.acquire() 171 self._sendData += xml 172 finally: 173 if self._sendDataLock: self._sendDataLock.release() 163 174 return xml 164 175 … … 199 210 def _ProcessWrite(self): 200 211 """Called by the SmartSelect mechanism when the socket is ready to be written to.""" 201 nSent = self._SocketSend(self._sendData) 202 if self._fileOut: print >> self._fileOut, self._sendData[:nSent] 203 self._sendData = self._sendData[nSent:] 212 try: 213 if self._sendDataLock: self._sendDataLock.acquire() 214 nSent = self._SocketSend(self._sendData) 215 if self._fileOut: print >> self._fileOut, self._sendData[:nSent] 216 self._sendData = self._sendData[nSent:] 217 finally: 218 if self._sendDataLock: self._sendDataLock.release() 204 219 205 220 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 210 225 """Similar to SendXML, except that _SendXMLImmediate only returns when all the pending 211 226 XML data has been written to the socket.""" 212 self._sendData += xml 213 while self._sendData and select.select([], [self._socket], [], 0.5): 214 nSent = self._SocketSend(self._sendData) 215 if self._fileOut: print >> self._fileOut, self._sendData[:nSent] 216 self._sendData = self._sendData[nSent:] 227 try: 228 if self._sendDataLock: self._sendDataLock.acquire() 229 self._sendData += xml 230 while self._sendData and select.select([], [self._socket], [], 0.5): 231 nSent = self._SocketSend(self._sendData) 232 if self._fileOut: print >> self._fileOut, self._sendData[:nSent] 233 self._sendData = self._sendData[nSent:] 234 finally: 235 if self._sendDataLock: self._sendDataLock.release() 217 236 218 237 def _SocketRecv(self, limit=8192):
