diff --git a/include/dwarfs/metadata_v2.h b/include/dwarfs/metadata_v2.h index 416bcd4b..e77d016b 100644 --- a/include/dwarfs/metadata_v2.h +++ b/include/dwarfs/metadata_v2.h @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -34,7 +35,6 @@ #include #include -#include #include #include "dwarfs/metadata_types.h" @@ -58,9 +58,9 @@ class metadata_v2 { public: metadata_v2() = default; - metadata_v2(logger& lgr, folly::ByteRange schema, folly::ByteRange data, - metadata_options const& options, int inode_offset = 0, - bool force_consistency_check = false); + metadata_v2(logger& lgr, std::span schema, + std::span data, metadata_options const& options, + int inode_offset = 0, bool force_consistency_check = false); metadata_v2& operator=(metadata_v2&&) = default; diff --git a/src/dwarfs/metadata_v2.cpp b/src/dwarfs/metadata_v2.cpp index c63d6926..49742396 100644 --- a/src/dwarfs/metadata_v2.cpp +++ b/src/dwarfs/metadata_v2.cpp @@ -91,7 +91,7 @@ freeze_to_buffer(const T& x) { return {schema_buffer, data_buffer}; } -void check_schema(folly::ByteRange data) { +void check_schema(std::span data) { using namespace ::apache::thrift; frozen::schema::Schema schema; size_t schemaSize = CompactSerializer::deserialize(data, schema); @@ -123,12 +123,14 @@ void check_schema(folly::ByteRange data) { } template -MappedFrozen map_frozen(folly::ByteRange schema, folly::ByteRange data) { +MappedFrozen +map_frozen(std::span schema, std::span data) { using namespace ::apache::thrift::frozen; check_schema(schema); auto layout = std::make_unique>(); - deserializeRootLayout(schema, *layout); - MappedFrozen ret(layout->view({data.begin(), 0})); + folly::ByteRange tmp(schema.data(), schema.size()); + deserializeRootLayout(tmp, *layout); + MappedFrozen ret(layout->view({data.data(), 0})); ret.hold(std::move(layout)); return ret; } @@ -298,9 +300,9 @@ const uint16_t READ_ONLY_MASK = ~(S_IWUSR | S_IWGRP | S_IWOTH); template class metadata_ final : public metadata_v2::impl { public: - metadata_(logger& lgr, folly::ByteRange schema, folly::ByteRange data, - metadata_options const& options, int inode_offset, - bool force_consistency_check) + metadata_(logger& lgr, std::span schema, + std::span data, metadata_options const& options, + int inode_offset, bool force_consistency_check) : data_(data) , meta_(map_frozen(schema, data_)) , global_(lgr, &meta_, @@ -719,7 +721,7 @@ class metadata_ final : public metadata_v2::impl { return nlinks; } - folly::ByteRange data_; + std::span data_; MappedFrozen meta_; const global_metadata global_; dir_entry_view root_; @@ -1385,9 +1387,10 @@ metadata_v2::freeze(const thrift::metadata::metadata& data) { return freeze_to_buffer(data); } -metadata_v2::metadata_v2(logger& lgr, folly::ByteRange schema, - folly::ByteRange data, metadata_options const& options, - int inode_offset, bool force_consistency_check) +metadata_v2::metadata_v2(logger& lgr, std::span schema, + std::span data, + metadata_options const& options, int inode_offset, + bool force_consistency_check) : impl_(make_unique_logging_object( lgr, schema, data, options, inode_offset, force_consistency_check)) {}