Skip to content

Commit 82466fd

Browse files
use CBOR annotations (#103)
Signed-off-by: Alexey-N-Chernyshov <[email protected]>
1 parent 9b9542a commit 82466fd

File tree

7 files changed

+65
-184
lines changed

7 files changed

+65
-184
lines changed

core/primitives/block/block.hpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
1+
/**
2+
* Copyright Soramitsu Co., Ltd. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
16
#include <boost/optional.hpp>
27

8+
#include "codec/cbor/streams_annotation.hpp"
9+
#include "crypto/signature/signature.hpp"
310
#include "primitives/address/address.hpp"
411
#include "primitives/address/address_codec.hpp"
512
#include "primitives/big_int.hpp"
@@ -8,7 +15,6 @@
815
#include "primitives/ticket/epost_ticket_codec.hpp"
916
#include "primitives/ticket/ticket.hpp"
1017
#include "primitives/ticket/ticket_codec.hpp"
11-
#include "crypto/signature/signature.hpp"
1218

1319
namespace fc::primitives::block {
1420
using primitives::BigInt;
@@ -46,10 +52,7 @@ namespace fc::primitives::block {
4652
&& lhs.fork_signaling == rhs.fork_signaling;
4753
}
4854

49-
template <class Stream,
50-
typename = std::enable_if_t<
51-
std::remove_reference_t<Stream>::is_cbor_encoder_stream>>
52-
Stream &operator<<(Stream &&s, const BlockHeader &block) {
55+
CBOR_ENCODE(BlockHeader, block) {
5356
return s << (s.list() << block.miner << block.ticket << block.epost_proof
5457
<< block.parents << block.parent_weight
5558
<< block.height << block.parent_state_root
@@ -58,10 +61,7 @@ namespace fc::primitives::block {
5861
<< block.block_sig << block.fork_signaling);
5962
}
6063

61-
template <class Stream,
62-
typename = std::enable_if_t<
63-
std::remove_reference_t<Stream>::is_cbor_decoder_stream>>
64-
Stream &operator>>(Stream &&s, BlockHeader &block) {
64+
CBOR_DECODE(BlockHeader, block) {
6565
s.list() >> block.miner >> block.ticket >> block.epost_proof
6666
>> block.parents >> block.parent_weight >> block.height
6767
>> block.parent_state_root >> block.parent_message_receipts

core/vm/actor/actor.hpp

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#ifndef CPP_FILECOIN_CORE_VM_ACTOR_ACTOR_HPP
77
#define CPP_FILECOIN_CORE_VM_ACTOR_ACTOR_HPP
88

9+
#include "codec/cbor/streams_annotation.hpp"
910
#include "common/buffer.hpp"
1011
#include "primitives/address/address.hpp"
1112
#include "primitives/big_int.hpp"
@@ -38,17 +39,11 @@ namespace fc::vm::actor {
3839
}
3940
};
4041

41-
template <class Stream,
42-
typename = std::enable_if_t<
43-
std::remove_reference<Stream>::type::is_cbor_encoder_stream>>
44-
Stream &operator<<(Stream &&s, const MethodNumber &method) {
42+
CBOR_ENCODE(MethodNumber, method) {
4543
return s << method.method_number;
4644
}
4745

48-
template <class Stream,
49-
typename = std::enable_if_t<
50-
std::remove_reference<Stream>::type::is_cbor_decoder_stream>>
51-
Stream &operator>>(Stream &&s, MethodNumber &method) {
46+
CBOR_DECODE(MethodNumber, method) {
5247
return s >> method.method_number;
5348
}
5449

@@ -97,18 +92,12 @@ namespace fc::vm::actor {
9792

9893
bool operator==(const Actor &lhs, const Actor &rhs);
9994

100-
template <class Stream,
101-
typename = std::enable_if_t<
102-
std::remove_reference_t<Stream>::is_cbor_encoder_stream>>
103-
Stream &operator<<(Stream &&s, const Actor &actor) {
95+
CBOR_ENCODE(Actor, actor) {
10496
return s << (s.list() << actor.code << actor.head << actor.nonce
10597
<< actor.balance);
10698
}
10799

108-
template <class Stream,
109-
typename = std::enable_if_t<
110-
std::remove_reference_t<Stream>::is_cbor_decoder_stream>>
111-
Stream &operator>>(Stream &&s, Actor &actor) {
100+
CBOR_DECODE(Actor, actor) {
112101
s.list() >> actor.code >> actor.head >> actor.nonce >> actor.balance;
113102
return s;
114103
}

core/vm/actor/builtin/account/account_actor.hpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#ifndef CPP_FILECOIN_CORE_VM_ACTOR_ACCOUNT_ACTOR_HPP
77
#define CPP_FILECOIN_CORE_VM_ACTOR_ACCOUNT_ACTOR_HPP
88

9+
#include "codec/cbor/streams_annotation.hpp"
910
#include "primitives/address/address_codec.hpp"
1011
#include "vm/state/state_tree.hpp"
1112

@@ -19,21 +20,6 @@ namespace fc::vm::actor::builtin::account {
1920
Address address;
2021
};
2122

22-
template <class Stream,
23-
typename = std::enable_if_t<
24-
std::remove_reference_t<Stream>::is_cbor_encoder_stream>>
25-
Stream &operator<<(Stream &&s, const AccountActorState &state) {
26-
return s << (s.list() << state.address);
27-
}
28-
29-
template <class Stream,
30-
typename = std::enable_if_t<
31-
std::remove_reference_t<Stream>::is_cbor_decoder_stream>>
32-
Stream &operator>>(Stream &&s, AccountActorState &state) {
33-
s.list() >> state.address;
34-
return s;
35-
}
36-
3723
/// Account actors represent actors without code
3824
struct AccountActor {
3925
/// Create account actor from BLS or Secp256k1 address
@@ -48,6 +34,16 @@ namespace fc::vm::actor::builtin::account {
4834
static outcome::result<Address> resolveToKeyAddress(
4935
const std::shared_ptr<StateTree> &state_tree, const Address &address);
5036
};
37+
38+
CBOR_ENCODE(AccountActorState, state) {
39+
return s << (s.list() << state.address);
40+
}
41+
42+
CBOR_DECODE(AccountActorState, state) {
43+
s.list() >> state.address;
44+
return s;
45+
}
46+
5147
} // namespace fc::vm::actor::builtin::account
5248

5349
#endif // CPP_FILECOIN_CORE_VM_ACTOR_ACCOUNT_ACTOR_HPP

core/vm/actor/builtin/init/init_actor.hpp

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#ifndef CPP_FILECOIN_CORE_VM_ACTOR_INIT_ACTOR_HPP
77
#define CPP_FILECOIN_CORE_VM_ACTOR_INIT_ACTOR_HPP
88

9+
#include "codec/cbor/streams_annotation.hpp"
910
#include "storage/ipfs/datastore.hpp"
1011
#include "vm/actor/actor_method.hpp"
1112

@@ -23,17 +24,11 @@ namespace fc::vm::actor::builtin::init {
2324
uint64_t next_id{};
2425
};
2526

26-
template <class Stream,
27-
typename = std::enable_if_t<
28-
std::remove_reference_t<Stream>::is_cbor_encoder_stream>>
29-
Stream &operator<<(Stream &&s, const InitActorState &state) {
27+
CBOR_ENCODE(InitActorState, state) {
3028
return s << (s.list() << state.address_map << state.next_id);
3129
}
3230

33-
template <class Stream,
34-
typename = std::enable_if_t<
35-
std::remove_reference_t<Stream>::is_cbor_decoder_stream>>
36-
Stream &operator>>(Stream &&s, InitActorState &state) {
31+
CBOR_DECODE(InitActorState, state) {
3732
s.list() >> state.address_map >> state.next_id;
3833
return s;
3934
}
@@ -51,17 +46,11 @@ namespace fc::vm::actor::builtin::init {
5146

5247
extern const ActorExports exports;
5348

54-
template <class Stream,
55-
typename = std::enable_if_t<
56-
std::remove_reference_t<Stream>::is_cbor_encoder_stream>>
57-
Stream &operator<<(Stream &&s, const ExecParams &params) {
49+
CBOR_ENCODE(ExecParams, params) {
5850
return s << (s.list() << params.code << params.params);
5951
}
6052

61-
template <class Stream,
62-
typename = std::enable_if_t<
63-
std::remove_reference_t<Stream>::is_cbor_decoder_stream>>
64-
Stream &operator>>(Stream &&s, ExecParams &params) {
53+
CBOR_DECODE(ExecParams, params) {
6554
s.list() >> params.code >> params.params;
6655
return s;
6756
}

0 commit comments

Comments
 (0)