def _on_identify_response(self, data, **kwargs): self.off(event.RESPONSE, self._on_identify_response) if data == 'OK': logger.warning( 'nsqd version does not support feature netgotiation') return self.trigger(event.READY, conn=self) try: data = json.loads(data) except ValueError: self.close() self.trigger( event.ERROR, conn=self, error=protocol.IntegrityError( 'failed to parse IDENTIFY response JSON from nsqd - %r' % data), ) return self.trigger(event.IDENTIFY_RESPONSE, conn=self, data=data) if self.tls_v1 and data.get('tls_v1'): self._features_to_enable.append('tls_v1') if self.snappy and data.get('snappy'): self._features_to_enable.append('snappy') if self.deflate and data.get('deflate'): self._features_to_enable.append('deflate') if data.get('auth_required'): self._authentication_required = True self.on(event.RESPONSE, self._on_response_continue) self._on_response_continue(conn=self, data=None)
def _read_size(self, data): try: size = struct.unpack('>l', data)[0] self.stream.read_bytes(size, self._read_body) except Exception: self.close() self.trigger( event.ERROR, conn=self, error=protocol.IntegrityError('failed to unpack size'), )
def _read_size(self, fut): try: data = fut.result() size = struct_l.unpack(data)[0] except Exception: self.close() self.trigger( event.ERROR, conn=self, error=protocol.IntegrityError('failed to unpack size'), ) return self._read_bytes(size, self._read_body)
def _on_auth_response(self, data, **kwargs): try: data = json.loads(data.decode('utf-8')) except ValueError: self.close() self.trigger( event.ERROR, conn=self, error=protocol.IntegrityError( 'failed to parse AUTH response JSON from nsqd - %r' % data), ) return self.off(event.RESPONSE, self._on_auth_response) self.trigger(event.AUTH_RESPONSE, conn=self, data=data) return self.trigger(event.READY, conn=self)
def _on_identify_response(self, data, **kwargs): self.off(event.RESPONSE, self._on_identify_response) if data == b'OK': logger.warning( 'nsqd version does not support feature netgotiation') return self.trigger(event.READY, conn=self) try: data = json.loads(data.decode('utf-8')) except ValueError: self.close() self.trigger( event.ERROR, conn=self, error=protocol.IntegrityError( 'failed to parse IDENTIFY response JSON from nsqd - %r' % data), ) return self.trigger(event.IDENTIFY_RESPONSE, conn=self, data=data) if self.tls_v1 and data.get('tls_v1'): self._features_to_enable.append('tls_v1') if self.snappy and data.get('snappy'): self._features_to_enable.append('snappy') if self.deflate and data.get('deflate'): self._features_to_enable.append('deflate') if data.get('auth_required'): self._authentication_required = True if data.get('max_rdy_count'): self.max_rdy_count = data.get('max_rdy_count') else: # for backwards compatibility when interacting with older nsqd # (pre 0.2.20), default this to their hard-coded max logger.warn('setting max_rdy_count to default value of 2500') self.max_rdy_count = 2500 self.on(event.RESPONSE, self._on_response_continue) self._on_response_continue(conn=self, data=None)