Skip to content

Commit 7924a20

Browse files
authored
Car reader and genesis (#151)
Signed-off-by: turuslan <[email protected]>
1 parent 1269acf commit 7924a20

31 files changed

+237
-84
lines changed

core/codec/cbor/cbor_decode_stream.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
#include "codec/cbor/cbor_decode_stream.hpp"
77

8-
#include <libp2p/multi/content_identifier_codec.hpp>
9-
108
namespace fc::codec::cbor {
119
CborDecodeStream::CborDecodeStream(gsl::span<const uint8_t> data)
1210
: data_(std::make_shared<std::vector<uint8_t>>(data.begin(), data.end())),
@@ -79,7 +77,7 @@ namespace fc::codec::cbor {
7977
outcome::raise(CborDecodeError::INVALID_CBOR_CID);
8078
}
8179
bytes.erase(bytes.begin());
82-
auto maybe_cid = libp2p::multi::ContentIdentifierCodec::decode(bytes);
80+
auto maybe_cid = CID::fromBytes(bytes);
8381
if (maybe_cid.has_error()) {
8482
outcome::raise(CborDecodeError::INVALID_CID);
8583
}

core/codec/cbor/cbor_encode_stream.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
#include "codec/cbor/cbor_encode_stream.hpp"
77

8-
#include <libp2p/multi/content_identifier_codec.hpp>
9-
108
namespace fc::codec::cbor {
119
CborEncodeStream &CborEncodeStream::operator<<(
1210
const std::vector<uint8_t> &bytes) {
@@ -42,9 +40,8 @@ namespace fc::codec::cbor {
4240
return *this;
4341
}
4442

45-
CborEncodeStream &CborEncodeStream::operator<<(
46-
const libp2p::multi::ContentIdentifier &cid) {
47-
auto maybe_cid_bytes = libp2p::multi::ContentIdentifierCodec::encode(cid);
43+
CborEncodeStream &CborEncodeStream::operator<<(const CID &cid) {
44+
auto maybe_cid_bytes = cid.toBytes();
4845
if (maybe_cid_bytes.has_error()) {
4946
outcome::raise(CborEncodeError::INVALID_CID);
5047
}

core/codec/cbor/cbor_encode_stream.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ namespace fc::codec::cbor {
9797
/** Encodes string */
9898
CborEncodeStream &operator<<(const std::string &str);
9999
/** Encodes CID */
100-
CborEncodeStream &operator<<(const libp2p::multi::ContentIdentifier &cid);
100+
CborEncodeStream &operator<<(const CID &cid);
101101
/** Encodes list container encode substream */
102102
CborEncodeStream &operator<<(const CborEncodeStream &other);
103103
/** Encodes map container encode substream map */

core/primitives/address/address_codec.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace fc::primitives::address {
2121

2222
using common::Blob;
2323
using base32 = cppcodec::base32_rfc4648;
24-
using UVarint = libp2p::multi::UVarint;
24+
using libp2p::multi::UVarint;
2525

2626
std::vector<uint8_t> encode(const Address &address) noexcept {
2727
std::vector<uint8_t> res{};

core/primitives/cid/cid.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include "primitives/cid/cid.hpp"
77

88
#include <libp2p/multi/content_identifier_codec.hpp>
9-
#include <libp2p/multi/uvarint.hpp>
9+
1010
#include "crypto/blake2/blake2b160.hpp"
1111

1212
namespace fc {
@@ -62,6 +62,11 @@ namespace fc {
6262
OUTCOME_TRY(cid, libp2p::multi::ContentIdentifierCodec::fromString(str));
6363
return CID{std::move(cid)};
6464
}
65+
66+
outcome::result<CID> CID::fromBytes(gsl::span<const uint8_t> input) {
67+
OUTCOME_TRY(cid, libp2p::multi::ContentIdentifierCodec::decode(input));
68+
return CID{std::move(cid)};
69+
}
6570
} // namespace fc
6671

6772
namespace fc::common {

core/primitives/cid/cid.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ namespace fc {
5858
outcome::result<std::vector<uint8_t>> toBytes() const;
5959

6060
static outcome::result<CID> fromString(const std::string &str);
61+
62+
static outcome::result<CID> fromBytes(gsl::span<const uint8_t> input);
6163
};
6264
} // namespace fc
6365

core/primitives/cid/comm_cid.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*/
55

66
#include "primitives/cid/comm_cid.hpp"
7-
#include <libp2p/multi/uvarint.hpp>
87
#include "primitives/cid/comm_cid_errors.hpp"
98

109
namespace fc::common {
@@ -44,11 +43,10 @@ namespace fc::common {
4443
return CommCidError::INVALID_HASH;
4544
}
4645

47-
using Version = libp2p::multi::ContentIdentifier::Version;
48-
4946
OUTCOME_TRY(mh, Multihash::create(static_cast<HashType>(code), commitment));
5047

51-
return CID(Version::V1, kFilecoinCodecType, mh);
48+
return CID(
49+
libp2p::multi::ContentIdentifier::Version::V1, kFilecoinCodecType, mh);
5250
}
5351

5452
outcome::result<Comm> CIDToPieceCommitmentV1(const CID &cid) {

core/primitives/tipset/tipset_key.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55

66
#include "primitives/tipset/tipset_key.hpp"
77

8-
#include <libp2p/multi/content_identifier_codec.hpp>
9-
#include "common/outcome.hpp"
10-
118
namespace fc::primitives::tipset {
129
namespace {
1310
using ByteArray = std::vector<uint8_t>;

core/storage/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#
55

66
add_subdirectory(amt)
7+
add_subdirectory(car)
78
add_subdirectory(chain)
89
add_subdirectory(config)
910
add_subdirectory(filestore)

core/storage/car/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Copyright Soramitsu Co., Ltd. All Rights Reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
add_library(car
5+
car.cpp
6+
)
7+
target_link_libraries(car
8+
cbor
9+
p2p::p2p_uvarint
10+
)

0 commit comments

Comments
 (0)