def __init__(self, target, auth=None, client_name=None, debug=False, msg_timeout=0, **kwargs): target = target if isinstance(target, address.Address) else address.Target(target) self._msg_timeout = msg_timeout self._pending_messages = [] self._message_sender = None self._shutdown = None # Sender and Link settings self._send_settle_mode = kwargs.pop('send_settle_mode', None) or constants.SenderSettleMode.Unsettled self._max_message_size = kwargs.pop('max_message_size', None) or constants.MAX_MESSAGE_LENGTH_BYTES self._link_properties = kwargs.pop('link_properties', None) self._link_credit = kwargs.pop('link_credit', None) # AMQP object settings self.sender_type = sender.MessageSender super(SendClient, self).__init__(target, auth=auth, client_name=client_name, debug=debug, **kwargs)
def redirect(self, redirect, auth): """Redirect the client endpoint using a Link DETACH redirect response. :param redirect: The Link DETACH redirect details. :type redirect: ~uamqp.errors.LinkRedirect :param auth: Authentication credentials to the redirected endpoint. :type auth: ~uamqp.authentication.common.AMQPAuth """ if self._ext_connection: raise ValueError("Clients with a shared connection cannot be " "automatically redirected.") if self._message_sender: self._message_sender.destroy() self._message_sender = None self._pending_messages = [] self._remote_address = address.Target(redirect.address) self._redirect(redirect, auth)