Line data Source code
1 : /**
2 : * Copyright Soramitsu Co., Ltd. All Rights Reserved.
3 : * SPDX-License-Identifier: Apache-2.0
4 : */
5 :
6 : #ifndef IROHA_SHARED_MODEL_PROTO_PEER_HPP
7 : #define IROHA_SHARED_MODEL_PROTO_PEER_HPP
8 :
9 : #include "backend/protobuf/common_objects/trivial_proto.hpp"
10 : #include "backend/protobuf/util.hpp"
11 : #include "cryptography/hash.hpp"
12 : #include "cryptography/public_key.hpp"
13 : #include "interfaces/common_objects/peer.hpp"
14 : #include "primitive.pb.h"
15 :
16 : namespace shared_model {
17 : namespace proto {
18 : class Peer final
19 : : public CopyableProto<interface::Peer, iroha::protocol::Peer, Peer> {
20 : public:
21 : template <typename PeerType>
22 : explicit Peer(PeerType &&peer)
23 18407 : : CopyableProto(std::forward<PeerType>(peer)) {}
24 :
25 : Peer(const Peer &o) : Peer(o.proto_) {}
26 :
27 : Peer(Peer &&o) noexcept : Peer(std::move(o.proto_)) {}
28 :
29 : const interface::types::AddressType &address() const override {
30 56804 : return proto_->address();
31 : }
32 :
33 : const interface::types::PubkeyType &pubkey() const override {
34 16649 : return public_key_;
35 : }
36 :
37 : private:
38 18407 : const interface::types::PubkeyType public_key_{
39 18407 : crypto::Hash::fromHexString(proto_->peer_key())};
40 : };
41 : } // namespace proto
42 : } // namespace shared_model
43 : #endif // IROHA_SHARED_MODEL_PROTO_PEER_HPP
|