def _invoke(self, timeout, request, xid=None): """A special writer used during connection establishment only""" self._submit(request, timeout, xid) zxid = None if xid: header, buffer, offset = self._read_header(timeout) if header.xid != xid: raise RuntimeError('xids do not match, expected %r received %r', xid, header.xid) if header.zxid > 0: zxid = header.zxid if header.err: callback_exception = EXCEPTIONS[header.err]() self.logger.info('Received error(xid=%s) %r', xid, callback_exception) raise callback_exception return zxid msg = self._read(4, timeout) length = int_struct.unpack(msg)[0] msg = self._read(length, timeout) if hasattr(request, 'deserialize'): try: obj, _ = request.deserialize(msg, 0) except Exception: self.logger.exception("Exception raised during deserialization" " of request: %s", request) # raise ConnectionDropped so connect loop will retry raise ConnectionDropped('invalid server response') self.logger.debug('Read response %s', obj) return obj, zxid return zxid
def _invoke(self, timeout, request, xid=None): """A special writer used during connection establishment only""" self._submit(request, timeout, xid) zxid = None if xid: header, buffer, offset = self._read_header(timeout) if header.xid != xid: raise RuntimeError( 'xids do not match, expected %r received %r', xid, header.xid) if header.zxid > 0: zxid = header.zxid if header.err: callback_exception = EXCEPTIONS[header.err]() if self.log_debug: log.debug('Received error %r', callback_exception) raise callback_exception return zxid msg = self._read(4, timeout) length = int_struct.unpack(msg)[0] msg = self._read(length, timeout) if hasattr(request, 'deserialize'): obj, _ = request.deserialize(msg, 0) log.debug('Read response %s', obj) return obj, zxid return zxid
def _invoke(self, timeout, request, xid=None): """A special writer used during connection establishment only""" self._submit(request, timeout, xid) zxid = None if xid: header, buffer, offset = self._read_header(timeout) if header.xid != xid: raise RuntimeError('xids do not match, expected %r received %r', xid, header.xid) if header.zxid > 0: zxid = header.zxid if header.err: callback_exception = EXCEPTIONS[header.err]() if self.log_debug: log.debug('Received error %r', callback_exception) raise callback_exception return zxid msg = self._read(4, timeout) length = int_struct.unpack(msg)[0] msg = self._read(length, timeout) if hasattr(request, 'deserialize'): obj, _ = request.deserialize(msg, 0) log.debug('Read response %s', obj) return obj, zxid return zxid
def _invoke(self, timeout, request, xid=None): """A special writer used during connection establishment only""" self._submit(request, timeout, xid) zxid = None if xid: header, buffer, offset = self._read_header(timeout) if header.xid != xid: raise RuntimeError( 'xids do not match, expected %r received %r', xid, header.xid) if header.zxid > 0: zxid = header.zxid if header.err: callback_exception = EXCEPTIONS[header.err]() self.logger.debug('Received error(xid=%s) %r', xid, callback_exception) raise callback_exception return zxid msg = self._read(4, timeout) length = int_struct.unpack(msg)[0] msg = self._read(length, timeout) if hasattr(request, 'deserialize'): try: obj, _ = request.deserialize(msg, 0) except Exception: self.logger.exception( "Exception raised during deserialization" " of request: %s", request) # raise ConnectionDropped so connect loop will retry raise ConnectionDropped('invalid server response') self.logger.log(BLATHER, 'Read response %s', obj) return obj, zxid return zxid
def _read_header(self, timeout): b = self._read(4, timeout) length = int_struct.unpack(b)[0] b = self._read(length, timeout) header, offset = ReplyHeader.deserialize(b, 0) return header, b, offset