Line data Source code
1 : /**
2 : * Copyright Soramitsu Co., Ltd. All Rights Reserved.
3 : * SPDX-License-Identifier: Apache-2.0
4 : */
5 :
6 : #include "interfaces/iroha_internal/transaction_sequence.hpp"
7 :
8 : #include <numeric>
9 :
10 : #include "interfaces/iroha_internal/transaction_batch.hpp"
11 :
12 : namespace shared_model {
13 : namespace interface {
14 :
15 : const types::SharedTxsCollectionType &TransactionSequence::transactions()
16 : const {
17 9 : if (not transactions_) {
18 4 : types::SharedTxsCollectionType result;
19 4 : auto transactions_amount =
20 4 : std::accumulate(std::begin(batches_),
21 4 : std::end(batches_),
22 : 0ul,
23 : [](size_t acc_size, auto batch) {
24 4 : return acc_size + batch->transactions().size();
25 : });
26 4 : result.reserve(transactions_amount);
27 8 : for (const auto &batch : batches_) {
28 4 : auto &transactions = batch->transactions();
29 4 : std::copy(transactions.begin(),
30 4 : transactions.end(),
31 4 : std::back_inserter(result));
32 : }
33 4 : transactions_.emplace(std::move(result));
34 4 : }
35 9 : return transactions_.value();
36 0 : }
37 :
38 : const types::BatchesCollectionType &TransactionSequence::batches() const {
39 4 : return batches_;
40 : }
41 :
42 : std::string TransactionSequence::toString() const {
43 0 : return detail::PrettyStringBuilder()
44 0 : .init("TransactionSequence")
45 0 : .appendAll(batches_,
46 : [](const auto &batch) { return batch->toString(); })
47 0 : .finalize();
48 0 : }
49 :
50 : TransactionSequence::TransactionSequence(
51 : const types::BatchesCollectionType &batches)
52 7 : : batches_(batches) {}
53 :
54 : } // namespace interface
55 : } // namespace shared_model
|