Changeset 192
- Timestamp:
- 06/24/02 11:55:12 (6 years ago)
- Files:
-
- trunk/RBJabber/RBJabber/Client.py (modified) (1 diff)
- trunk/RBJabber/RBJabber/JabberConnection.py (modified) (5 diffs)
- trunk/RBJabber/RBJabber/Test.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBJabber/RBJabber/Client.py
r173 r192 116 116 return self.__super._SocketSend(data) 117 117 118 def _SetSocketError(self, exc_class, exc_info, exc_traceback): 119 self.stream.UpdateObservers(socket_error=(exc_class, exc_info)) 120 del exc_class 121 del exc_info 122 del exc_traceback 123 118 124 def _NeedsRead(self, *args, **kw): 119 125 """Overrides SmartSelect mechanism to signal stream processtick events.""" trunk/RBJabber/RBJabber/JabberConnection.py
r164 r192 52 52 from Foundation.WeakBind import BindCallable 53 53 import JID 54 import sys 54 55 import socket 55 56 import select … … 116 117 # Create our socket 117 118 self._sendData = '' 118 self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 119 params = JID.reJabberURL.split(JabberServerURL)[1:-1] 120 self._socket.connect((params[0], port)) 119 try: 120 self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 121 params = JID.reJabberURL.split(JabberServerURL)[1:-1] 122 self._socket.connect((params[0], port)) 123 except socket.error: 124 self._SetSocketError(*sys.exc_info()) 125 raise 121 126 self.fileno = self._socket.fileno 122 127 … … 132 137 """Politely disconnects the socket and parser from the jabber stream""" 133 138 if __debug__: print 'Disconnecting %s from %s' % (self.__class__.__name__, self.ServerJID) 134 self._SendXMLImmediate('%s' % _xmlJabberFooter) 135 if self._fileIn: print >> self._fileIn, '</stream:stream>' 139 if self._socket: 140 try: self._SendXMLImmediate('%s' % _xmlJabberFooter) 141 except socket.error: pass 142 if self._fileIn: print >> self._fileIn, _xmlJabberFooter 136 143 self._socket = None 137 144 self._parser = None … … 204 211 XML data has been written to the socket.""" 205 212 self._sendData += xml 206 while self._sendData and select.select([], [self._socket], [] ):213 while self._sendData and select.select([], [self._socket], [], 0.5): 207 214 nSent = self._SocketSend(self._sendData) 208 215 if self._fileOut: print >> self._fileOut, self._sendData[:nSent] … … 210 217 211 218 def _SocketRecv(self, limit=8192): 212 return self._socket.recv(limit) 219 try: 220 return self._socket.recv(limit) 221 except socket.error: 222 self._SetSocketError(*sys.exc_info()) 223 raise 213 224 214 225 def _SocketSend(self, data): 215 return self._socket.send(data) 226 try: 227 return self._socket.send(data) 228 except socket.error: 229 self._SetSocketError(*sys.exc_info()) 230 raise 231 232 def _SetSocketError(self, exc_class, exc_info, exc_traceback): 233 del exc_class 234 del exc_info 235 del exc_traceback 216 236 217 237 # Keep the super around for speed trunk/RBJabber/RBJabber/Test.py
r164 r192 41 41 import SubscribeApproveResponse 42 42 import PresenceMap 43 import sys,socket 43 44 44 45 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 71 72 jc.Responses.append(SubscribeApproveResponse.SubscribeApproveResponse(jc)) 72 73 73 while 1: jc.Process(0.5) 74 while 1: 75 jc.Process(0.5) 74 76 except KeyboardInterrupt: 75 77 jc.SendXML('''<presence type="unavailable" />''') … … 105 107 strEval = ('{"%s"}'%strEval) 106 108 dictLogin.update(eval(strEval, {}, {})) 107 _test(**dictLogin)108 109 110 import time 111 while 1: 112 try: 113 _test(**dictLogin) 114 break 115 except socket.error, info: 116 print "Socket Error:", info 117 time.sleep(5.0) 118 print "Attempting Reconnect..." 119 except KeyboardInterrupt: 120 break 121
