in uamqp/receiver.py [0:0]
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, 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.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 is not None:
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