def get_result(self, request: Request): ledger_id = request.operation.get(f.LEDGER_ID.nm, DOMAIN_LEDGER_ID) db = self.database_manager.get_database(ledger_id) if db is None: return RequestNack(request.identifier, request.reqId, 'Invalid ledger id {}'.format(ledger_id)) seq_no = request.operation.get(DATA) try: txn = self.node.getReplyFromLedger(db.ledger, seq_no) except KeyError: txn = None if txn is None: logger.debug("{} can not handle GET_TXN request: ledger doesn't " "have txn with seqNo={}".format(self, str(seq_no))) result = { f.IDENTIFIER.nm: request.identifier, f.REQ_ID.nm: request.reqId, TXN_TYPE: request.operation[TXN_TYPE], DATA: None } if txn: result[DATA] = txn.result result[f.SEQ_NO.nm] = get_seq_no(txn.result) return Reply(result)
def get_result(self, request: Request): ledger_id = request.operation.get(f.LEDGER_ID.nm, DOMAIN_LEDGER_ID) db = self.database_manager.get_database(ledger_id) if db is None: return RequestNack(request.identifier, request.reqId, 'Invalid ledger id {}'.format(ledger_id)) seq_no = request.operation.get(DATA) multi_sig = None try: txn = self.node.getReplyFromLedger(db.ledger, seq_no, write=False) audit_ledger = self.database_manager.get_ledger(AUDIT_LEDGER_ID) audit_seq_no = audit_ledger.size state_root = None for seq_no in reversed(range(1, audit_seq_no + 1)): audit_txn = audit_ledger.getBySeqNo(seq_no) state_root = audit_txn[TXN_PAYLOAD][DATA][AUDIT_TXN_STATE_ROOT].get(ledger_id, None) if state_root: break if state_root is not None: multi_sig = self.database_manager.bls_store.get(state_root) except KeyError: txn = None if txn is None: logger.debug( "{} can not handle GET_TXN request: ledger doesn't " "have txn with seqNo={}".format(self, str(seq_no))) result = { f.IDENTIFIER.nm: request.identifier, f.REQ_ID.nm: request.reqId, TXN_TYPE: request.operation[TXN_TYPE], DATA: None, } if multi_sig: result[STATE_PROOF] = { MULTI_SIGNATURE: multi_sig.as_dict() } if txn: result[DATA] = txn.result result[f.SEQ_NO.nm] = get_seq_no(txn.result) return result
def get_result(self, request: Request): handler = self.request_handlers.get(request.operation[TXN_TYPE], None) if handler is None: return RequestNack(request.identifier, request.reqId) return handler.get_result(request)
def nackReq(self, req, frm): self.transmitToClient(RequestNack(*req.key, "testing"), frm)