MCPcopy Index your code
hub / github.com/apache/cassandra-python-driver / handle_read

Method handle_read

cassandra/io/libevreactor.py:341–375  ·  view source on GitHub ↗
(self, watcher, revents, errno=None)

Source from the content-addressed store, hash-verified

339 return
340
341 def handle_read(self, watcher, revents, errno=None):
342 if revents & libev.EV_ERROR:
343 if errno:
344 exc = IOError(errno, os.strerror(errno))
345 else:
346 exc = Exception("libev reported an error")
347
348 self.defunct(exc)
349 return
350 try:
351 while True:
352 buf = self._socket.recv(self.in_buffer_size)
353 self._iobuf.write(buf)
354 if len(buf) < self.in_buffer_size:
355 break
356 except socket.error as err:
357 if isinstance(err, ssl.SSLError):
358 if err.args[0] in (ssl.SSL_ERROR_WANT_READ, ssl.SSL_ERROR_WANT_WRITE):
359 if not self._iobuf.tell():
360 return
361 else:
362 self.defunct(err)
363 return
364 elif err.args[0] in NONBLOCKING:
365 if not self._iobuf.tell():
366 return
367 else:
368 self.defunct(err)
369 return
370
371 if self._iobuf.tell():
372 self.process_io_buffer()
373 else:
374 log.debug("Connection %s closed by server", self)
375 self.close()
376
377 def push(self, data):
378 sabs = self.out_buffer_size

Calls 4

closeMethod · 0.95
defunctMethod · 0.80
recvMethod · 0.80
process_io_bufferMethod · 0.80