in qpid/messaging/driver.py [0:0]
def link(self, lnk, dir, addr):
sst = self._attachments.get(lnk.session)
_lnk = self._attachments.get(lnk)
if _lnk is None and not lnk.closed:
_lnk = Attachment(lnk)
_lnk.closing = False
dir.init_link(sst, lnk, _lnk)
err = self.parse_address(_lnk, dir, addr) or self.validate_options(_lnk, dir)
if err:
lnk.error = err
lnk.closed = True
return
def linked():
lnk.linked = True
def resolved(type, subtype):
dir.do_link(sst, lnk, _lnk, type, subtype, linked)
self.resolve_declare(sst, _lnk, dir.DIR_NAME, resolved)
self._attachments[lnk] = _lnk
if lnk.linked and lnk.closing and not lnk.closed:
if not _lnk.closing:
def unlinked():
dir.del_link(sst, lnk, _lnk)
del self._attachments[lnk]
lnk.closed = True
if _lnk.options.get("delete") in ("always", dir.DIR_NAME):
dir.do_unlink(sst, lnk, _lnk)
requested_type = _lnk.options.get("node", {}).get("type")
self.delete(sst, _lnk.name, unlinked, node_type=requested_type)
else:
dir.do_unlink(sst, lnk, _lnk, unlinked)
_lnk.closing = True
elif not lnk.linked and lnk.closing and not lnk.closed:
if lnk.error: lnk.closed = True