def pn_connection_open(conn): props = dat2obj(conn.properties) offered = dat2obj(conn.offered_capabilities) desired = dat2obj(conn.desired_capabilities) if props: conn.impl.setProperties(props) if offered: conn.impl.setOfferedCapabilities(array(list(offered), Symbol)) if desired: conn.impl.setDesiredCapabilities(array(list(desired), Symbol)) conn.impl.open()
def pn_transport_push(trans, input): result = 0 while input: cap = pn_transport_capacity(trans) if cap < 0: return cap elif len(input) > cap: trimmed = input[:cap] else: trimmed = input bb = trans.impl.tail() bb.put(array(trimmed, 'b')) trans.impl.process() input = input[cap:] result += len(trimmed) return result
def encode(self): impl = TERMINUS_TYPES_P2J[self.type]() if self.type in (PN_SOURCE, PN_TARGET): impl.setAddress(self.address) impl.setDurable(DURABILITY_P2J[self.durability]) impl.setExpiryPolicy(EXPIRY_POLICY_P2J[self.expiry_policy]) impl.setTimeout(UnsignedInteger.valueOf(self.timeout)) impl.setDynamic(self.dynamic) props = dat2obj(self.properties) caps = dat2obj(self.capabilities) if props: impl.setDynamicNodeProperties(props) if caps: impl.setCapabilities(*array(list(caps), Symbol)) if self.type == PN_SOURCE: impl.setDistributionMode(DISTRIBUTION_MODE_P2J[self.distribution_mode]) outcomes = dat2obj(self.outcomes) filter = dat2obj(self.filter) if outcomes: impl.setOutcomes(outcomes) if filter: impl.setFilter(filter) return impl
def pn_link_send(link, bytes): return link.impl.send(array(bytes, 'b'), 0, len(bytes))
def pn_data_decode(data, encoded): return data.decode(ByteBuffer.wrap(array(encoded, 'b')))
def pn_data_put_uuid(data, u): bb = ByteBuffer.wrap(array(u, 'b')) first = bb.getLong() second = bb.getLong() data.putUUID(JUUID(first, second)) return 0
def pn_data_put_binary(data, b): data.putBinary(array(b, 'b')) return 0
def pn_delivery(link, tag): return wrap(link.impl.delivery(array(tag, 'b')), pn_delivery_wrapper)
def pn_data_put_decimal128(data, d): data.putDecimal128(Decimal128(array(d, 'b'))) return 0