class RequestNack(MessageBase): typename = REQNACK schema = ( (f.IDENTIFIER.nm, AnyValueField()), (f.REQ_ID.nm, AnyValueField()), (f.REASON.nm, AnyValueField()), )
class Reject(MessageBase): typename = REJECT schema = ( (f.IDENTIFIER.nm, AnyValueField()), (f.REQ_ID.nm, AnyValueField()), (f.REASON.nm, AnyValueField()), )
class CheckpointState(MessageBase): typename = CHECKPOINT_STATE schema = ( (f.SEQ_NO.nm, AnyValueField()), (f.DIGESTS.nm, AnyValueField()), (f.DIGEST.nm, AnyValueField()), (f.RECEIVED_DIGESTS.nm, AnyValueField()), (f.IS_STABLE.nm, AnyValueField()) )
class ObservedData(MessageBase): """ Purpose: propagate data from Validators to Observers """ # TODO: support other types # TODO: support validation of Msg according to the type allowed_types = {BATCH} typename = OBSERVED_DATA schema = ( (f.MSG_TYPE.nm, ChooseField(values=allowed_types)), (f.MSG.nm, AnyValueField()) ) def _validate_message(self, dct): msg = dct[f.MSG.nm] # TODO: support other types expected_type_cls = BatchCommitted if isinstance(msg, expected_type_cls): return None if isinstance(msg, dict): expected_type_cls(**msg) return None self._raise_invalid_fields( f.MSG.nm, msg, "The message type must be {} ".format(expected_type_cls.typename))
class CatchupRep(MessageBase): typename = CATCHUP_REP schema = ( (f.LEDGER_ID.nm, LedgerIdField()), # TODO: turn on validation, the cause is INDY-388 # (f.TXNS.nm, MapField(key_field=StringifiedNonNegativeNumberField(), # value_field=ClientMessageValidator(operation_schema_is_strict=False))), (f.TXNS.nm, AnyValueField()), (f.CONS_PROOF.nm, IterableField(Base58Field(byte_lengths=(32, )))), )
class PoolLedgerTxns(MessageBase): typename = POOL_LEDGER_TXNS schema = ((f.TXN.nm, AnyValueField()), )
class BlacklistMsg(MessageBase): typename = BLACKLIST schema = ( (f.SUSP_CODE.nm, AnyValueField()), (f.NODE_NAME.nm, AnyValueField()), )
class Reply(MessageBase): typename = REPLY schema = ((f.RESULT.nm, AnyValueField()), )
class Message2(MessageBase): typename = 'Message2' schema = ( ('a', NonNegativeNumberField()), ('b', AnyValueField()), )
class Gossip(MessageBase): typename = 'gossip' schema = (('msgs', IterableField(AnyValueField())), )