in qpid/messaging/driver.py [0:0]
def attach(self, ssn):
if ssn.closed: return
sst = self._attachments.get(ssn)
if sst is None:
for i in range(0, self.channel_max):
if i not in self._sessions:
ch = i
break
else:
raise RuntimeError("all channels used")
sst = SessionState(self, ssn, ssn.name, ch)
sst.write_op(SessionAttach(name=ssn.name, force=self._reconnecting))
sst.write_op(SessionCommandPoint(sst.sent, 0))
self._reconnecting = False
sst.outgoing_idx = 0
sst.acked = []
sst.acked_idx = 0
if ssn.transactional:
sst.write_cmd(TxSelect())
self._attachments[ssn] = sst
self._sessions[sst.channel] = sst
for snd in ssn.senders:
self.link(snd, self._out, snd.target)
for rcv in ssn.receivers:
self.link(rcv, self._in, rcv.source)
if sst is not None and ssn.closing and not sst.detached:
sst.detached = True
sst.write_op(SessionDetach(name=ssn.name))