def __init__(self, session, source, target, on_message_received, name=None, receive_settle_mode=constants.ReceiverSettleMode.PeekLock, send_settle_mode=constants.SenderSettleMode.Unsettled, max_message_size=constants.MAX_MESSAGE_LENGTH_BYTES, prefetch=300, properties=None, error_policy=None, debug=False, encoding='UTF-8', desired_capabilities=None): # pylint: disable=protected-access if name: self.name = name.encode(encoding) if isinstance( name, six.text_type) else name else: self.name = str(uuid.uuid4()).encode(encoding) target = target.encode(encoding) if isinstance( target, six.text_type) else target role = constants.Role.Receiver self.source = source._address.value self.target = c_uamqp.Messaging.create_target(target) self.on_message_received = on_message_received self.encoding = encoding self.error_policy = error_policy or errors.ErrorPolicy() self._settle_mode = receive_settle_mode self._conn = session._conn self._session = session self._link = c_uamqp.create_link(session._session, self.name, role.value, self.source, self.target) self._link.subscribe_to_detach_event(self) if prefetch: self._link.set_prefetch_count(prefetch) if properties: self._link.set_attach_properties( utils.data_factory(properties, encoding=encoding)) if receive_settle_mode: self.receive_settle_mode = receive_settle_mode if send_settle_mode: self.send_settle_mode = send_settle_mode if max_message_size: self.max_message_size = max_message_size if desired_capabilities: self._link.set_desired_capabilities(desired_capabilities) self._receiver = c_uamqp.create_message_receiver(self._link, self) self._receiver.set_trace(debug) self._state = constants.MessageReceiverState.Idle self._error = None
def __init__(self, session, source, target, on_message_received, name=None, receive_settle_mode=None, max_message_size=None, prefetch=None, properties=None, debug=False, encoding='UTF-8'): # pylint: disable=protected-access if name: self.name = name.encode(encoding) if isinstance(name, str) else name else: self.name = str(uuid.uuid4()).encode(encoding) target = target.encode(encoding) if isinstance(target, str) else target role = constants.Role.Receiver self.source = source._address.value self.target = c_uamqp.Messaging.create_target(target) self.on_message_received = on_message_received self._conn = session._conn self._session = session self._link = c_uamqp.create_link(session._session, self.name, role.value, self.source, self.target) if prefetch: self._link.set_prefetch_count(prefetch) if properties: self._link.set_attach_properties( utils.data_factory(properties, encoding=encoding)) if receive_settle_mode: self.receive_settle_mode = receive_settle_mode if max_message_size: self.max_message_size = max_message_size self._receiver = c_uamqp.create_message_receiver(self._link, self) self._receiver.set_trace(debug) self._state = constants.MessageReceiverState.Idle