hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
proposal_validator.hpp
Go to the documentation of this file.
1 
6 #ifndef IROHA_PROPOSAL_VALIDATOR_HPP
7 #define IROHA_PROPOSAL_VALIDATOR_HPP
8 
9 #include <boost/format.hpp>
15 
16 // TODO 22/01/2018 x3medima17: write stateless validator IR-836
17 
18 namespace shared_model {
19  namespace validation {
20 
24  template <typename FieldValidator, typename TransactionsCollectionValidator>
25  class ProposalValidator : public AbstractValidator<interface::Proposal> {
26  public:
27  ProposalValidator(std::shared_ptr<ValidatorsConfig> config)
28  : transactions_collection_validator_(config),
29  field_validator_(config) {}
30 
36  std::optional<ValidationError> validate(
37  const interface::Proposal &proposal) const {
38  ValidationErrorCreator error_creator;
39 
40  error_creator |= field_validator_.validateHeight(proposal.height());
41  error_creator |= transactions_collection_validator_.validate(
42  proposal.transactions(), proposal.createdTime());
43 
44  return std::move(error_creator).getValidationError("Proposal");
45  }
46 
47  private:
48  TransactionsCollectionValidator transactions_collection_validator_;
49  FieldValidator field_validator_;
50  };
51 
52  } // namespace validation
53 } // namespace shared_model
54 
55 #endif // IROHA_PROPOSAL_VALIDATOR_HPP
std::optional< ValidationError > validateHeight(const interface::types::HeightType &height) const
Definition: field_validator.cpp:373
Definition: abstract_validator.hpp:17
Definition: proposal.hpp:17
std::optional< ValidationError > validate(const interface::Proposal &proposal) const
Definition: proposal_validator.hpp:36
virtual types::HeightType height() const =0
Definition: proposal_validator.hpp:25
virtual types::TransactionsCollectionType transactions() const =0
Definition: field_validator.hpp:41
Helper class for ValidationError creation.
Definition: validation_error_helpers.hpp:16
std::optional< ValidationError > validate(const interface::types::TransactionsForwardCollectionType &transactions) const
Definition: transactions_collection_validator.cpp:96
Definition: command_executor.hpp:12
virtual types::TimestampType createdTime() const =0
Definition: transactions_collection_validator.hpp:24
ProposalValidator(std::shared_ptr< ValidatorsConfig > config)
Definition: proposal_validator.hpp:27