]> jfr.im git - irc/quakenet/qwebirc.git/commitdiff
Optimise buffer length code for very large buffers.
authorChris Porter <redacted>
Fri, 19 Jun 2009 22:35:59 +0000 (23:35 +0100)
committerChris Porter <redacted>
Fri, 19 Jun 2009 22:35:59 +0000 (23:35 +0100)
qwebirc/engines/ajaxengine.py

index 6b0bf45b02fb8c3efa0bc146bb771f0d66db0e94..0212e5a7f736d0212f6f23bda5add2cbd7f87530 100644 (file)
@@ -52,6 +52,7 @@ class IRCSession:
     self.id = id
     self.subscriptions = []
     self.buffer = []
+    self.buflen = 0
     self.throttle = 0
     self.schedule = None
     self.closed = False
@@ -106,7 +107,8 @@ class IRCSession:
 
     encdata = simplejson.dumps(self.buffer)
     self.buffer = []
-    
+    self.buflen = 0
+
     newsubs = []
     for x in self.subscriptions:
       if x.write(encdata):
@@ -117,13 +119,14 @@ class IRCSession:
       cleanupSession(self.id)
 
   def event(self, data):
-    bufferlen = sum(map(len, self.buffer))
-    if bufferlen + len(data) > config.MAXBUFLEN:
+    newbuflen = self.buflen + len(data)
+    if newbuflen > config.MAXBUFLEN:
       self.buffer = []
       self.client.error("Buffer overflow.")
       return
 
     self.buffer.append(data)
+    self.buflen = newbuflen
     self.flush()
     
   def push(self, data):