diff options
author | eshemchik <eshemchik@yandex-team.ru> | 2022-02-10 16:50:53 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:50:53 +0300 |
commit | face8a85ff3525043b92e692a9891cd1c19519c4 (patch) | |
tree | b8d8fb33c214e745aed40b94ec90c00fa14a1d59 /library | |
parent | c30e2c009b4c8b03c837d199a610c5b0596d0233 (diff) | |
download | ydb-face8a85ff3525043b92e692a9891cd1c19519c4.tar.gz |
Restoring authorship annotation for <eshemchik@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'library')
-rw-r--r-- | library/cpp/archive/directory_models_archive_reader.cpp | 138 | ||||
-rw-r--r-- | library/cpp/archive/directory_models_archive_reader.h | 70 | ||||
-rw-r--r-- | library/cpp/archive/directory_models_archive_reader_ut.cpp | 108 | ||||
-rw-r--r-- | library/cpp/archive/models_archive_reader.h | 38 | ||||
-rw-r--r-- | library/cpp/archive/ut/ya.make | 2 | ||||
-rw-r--r-- | library/cpp/archive/ya.make | 4 | ||||
-rw-r--r-- | library/cpp/archive/yarchive.cpp | 2 | ||||
-rw-r--r-- | library/cpp/archive/yarchive.h | 8 |
8 files changed, 185 insertions, 185 deletions
diff --git a/library/cpp/archive/directory_models_archive_reader.cpp b/library/cpp/archive/directory_models_archive_reader.cpp index 6de9424c7c..6c85cecf67 100644 --- a/library/cpp/archive/directory_models_archive_reader.cpp +++ b/library/cpp/archive/directory_models_archive_reader.cpp @@ -1,37 +1,37 @@ -#include "directory_models_archive_reader.h" +#include "directory_models_archive_reader.h" #include "yarchive.h" - -#include <util/folder/dirut.h> -#include <util/folder/filelist.h> -#include <util/folder/path.h> -#include <util/memory/blob.h> -#include <util/stream/file.h> -#include <util/stream/input.h> -#include <util/stream/mem.h> - + +#include <util/folder/dirut.h> +#include <util/folder/filelist.h> +#include <util/folder/path.h> +#include <util/memory/blob.h> +#include <util/stream/file.h> +#include <util/stream/input.h> +#include <util/stream/mem.h> + TDirectoryModelsArchiveReader::TDirectoryModelsArchiveReader(const TString& path, bool lockMemory, bool ownBlobs) - : Path_(path) -{ - Y_ENSURE(IsDir(path), "directory not found on this path"); - + : Path_(path) +{ + Y_ENSURE(IsDir(path), "directory not found on this path"); + LoadFilesAndSubdirs("", lockMemory, ownBlobs); -} - -TDirectoryModelsArchiveReader::~TDirectoryModelsArchiveReader() {} - -size_t TDirectoryModelsArchiveReader::Count() const noexcept { - return Recs_.size(); -} - -TString TDirectoryModelsArchiveReader::KeyByIndex(size_t n) const { - Y_ENSURE(n < Count(), "incorrect index " << n); - return Recs_[n]; -} - -bool TDirectoryModelsArchiveReader::Has(const TStringBuf key) const { +} + +TDirectoryModelsArchiveReader::~TDirectoryModelsArchiveReader() {} + +size_t TDirectoryModelsArchiveReader::Count() const noexcept { + return Recs_.size(); +} + +TString TDirectoryModelsArchiveReader::KeyByIndex(size_t n) const { + Y_ENSURE(n < Count(), "incorrect index " << n); + return Recs_[n]; +} + +bool TDirectoryModelsArchiveReader::Has(const TStringBuf key) const { return BlobByKey_.contains(key) || PathByKey_.contains(key); -} - +} + namespace { struct TBlobOwningStream : public TMemoryInput { TBlob Blob; @@ -42,15 +42,15 @@ namespace { }; } -TAutoPtr<IInputStream> TDirectoryModelsArchiveReader::ObjectByKey(const TStringBuf key) const { +TAutoPtr<IInputStream> TDirectoryModelsArchiveReader::ObjectByKey(const TStringBuf key) const { return new TBlobOwningStream(BlobByKey(key)); -} - -TBlob TDirectoryModelsArchiveReader::ObjectBlobByKey(const TStringBuf key) const { - return BlobByKey(key); -} - -TBlob TDirectoryModelsArchiveReader::BlobByKey(const TStringBuf key) const { +} + +TBlob TDirectoryModelsArchiveReader::ObjectBlobByKey(const TStringBuf key) const { + return BlobByKey(key); +} + +TBlob TDirectoryModelsArchiveReader::BlobByKey(const TStringBuf key) const { Y_ENSURE(Has(key), "key " << key << " not found"); if (auto ptr = BlobByKey_.FindPtr(key); ptr) { return *ptr; @@ -59,34 +59,34 @@ TBlob TDirectoryModelsArchiveReader::BlobByKey(const TStringBuf key) const { return TBlob::FromFile(*ptr); } Y_UNREACHABLE(); -} - -bool TDirectoryModelsArchiveReader::Compressed() const { - return false; -} - -TString TDirectoryModelsArchiveReader::NormalizePath(TString path) const { - path = "/" + path; - for (size_t i = 0; i < path.size(); i++) { - if (path[i] == '\\') - path[i] = '/'; - } - return path; -} - +} + +bool TDirectoryModelsArchiveReader::Compressed() const { + return false; +} + +TString TDirectoryModelsArchiveReader::NormalizePath(TString path) const { + path = "/" + path; + for (size_t i = 0; i < path.size(); i++) { + if (path[i] == '\\') + path[i] = '/'; + } + return path; +} + void TDirectoryModelsArchiveReader::LoadFilesAndSubdirs(const TString& subPath, bool lockMemory, bool ownBlobs) { - TFileList fileList; - fileList.Fill(JoinFsPaths(Path_, subPath)); - const char* file; - while ((file = fileList.Next()) != nullptr) { - TString key = JoinFsPaths(subPath, TString(file)); + TFileList fileList; + fileList.Fill(JoinFsPaths(Path_, subPath)); + const char* file; + while ((file = fileList.Next()) != nullptr) { + TString key = JoinFsPaths(subPath, TString(file)); TString fullPath = JoinFsPaths(Path_, key); TBlob fileBlob; - if (lockMemory) { + if (lockMemory) { fileBlob = TBlob::LockedFromFile(fullPath); - } else { + } else { fileBlob = TBlob::FromFile(fullPath); - } + } if (key.EndsWith(".archive")) { TArchiveReader reader(fileBlob); for (size_t i = 0, iEnd = reader.Count(); i < iEnd; ++i) { @@ -104,12 +104,12 @@ void TDirectoryModelsArchiveReader::LoadFilesAndSubdirs(const TString& subPath, } Recs_.push_back(normalizedPath); } - } - - TDirsList dirsList; - dirsList.Fill(JoinFsPaths(Path_, subPath)); - const char* dir; - while ((dir = dirsList.Next()) != nullptr) { + } + + TDirsList dirsList; + dirsList.Fill(JoinFsPaths(Path_, subPath)); + const char* dir; + while ((dir = dirsList.Next()) != nullptr) { LoadFilesAndSubdirs(JoinFsPaths(subPath, TString(dir)), lockMemory, ownBlobs); - } -} + } +} diff --git a/library/cpp/archive/directory_models_archive_reader.h b/library/cpp/archive/directory_models_archive_reader.h index d16d6d728d..7c479970e1 100644 --- a/library/cpp/archive/directory_models_archive_reader.h +++ b/library/cpp/archive/directory_models_archive_reader.h @@ -1,38 +1,38 @@ -#pragma once - -#include "models_archive_reader.h" - -#include <util/folder/path.h> -#include <util/generic/fwd.h> -#include <util/generic/hash.h> -#include <util/generic/ptr.h> -#include <util/generic/vector.h> - - -class IInputStream; - -class TBlob; - -class TDirectoryModelsArchiveReader : public IModelsArchiveReader { -public: +#pragma once + +#include "models_archive_reader.h" + +#include <util/folder/path.h> +#include <util/generic/fwd.h> +#include <util/generic/hash.h> +#include <util/generic/ptr.h> +#include <util/generic/vector.h> + + +class IInputStream; + +class TBlob; + +class TDirectoryModelsArchiveReader : public IModelsArchiveReader { +public: TDirectoryModelsArchiveReader(const TString& path, bool lockMemory = false, bool ownBlobs = false); - virtual ~TDirectoryModelsArchiveReader() override; - - virtual size_t Count() const noexcept override; - virtual TString KeyByIndex(size_t n) const override; - virtual bool Has(const TStringBuf key) const override; - virtual TAutoPtr<IInputStream> ObjectByKey(const TStringBuf key) const override; - virtual TBlob ObjectBlobByKey(const TStringBuf key) const override; - virtual TBlob BlobByKey(const TStringBuf key) const override; - virtual bool Compressed() const override; - -private: - TString NormalizePath(TString path) const; // in archive path works unix-like path delimiter and leading slash is neccesery + virtual ~TDirectoryModelsArchiveReader() override; + + virtual size_t Count() const noexcept override; + virtual TString KeyByIndex(size_t n) const override; + virtual bool Has(const TStringBuf key) const override; + virtual TAutoPtr<IInputStream> ObjectByKey(const TStringBuf key) const override; + virtual TBlob ObjectBlobByKey(const TStringBuf key) const override; + virtual TBlob BlobByKey(const TStringBuf key) const override; + virtual bool Compressed() const override; + +private: + TString NormalizePath(TString path) const; // in archive path works unix-like path delimiter and leading slash is neccesery void LoadFilesAndSubdirs(const TString& subPath, bool lockMemory, bool ownBlobs); - -private: - TString Path_; + +private: + TString Path_; THashMap<TString, TString> PathByKey_; - THashMap<TString, TBlob> BlobByKey_; - TVector<TString> Recs_; -}; + THashMap<TString, TBlob> BlobByKey_; + TVector<TString> Recs_; +}; diff --git a/library/cpp/archive/directory_models_archive_reader_ut.cpp b/library/cpp/archive/directory_models_archive_reader_ut.cpp index 09994de9b4..92b710a495 100644 --- a/library/cpp/archive/directory_models_archive_reader_ut.cpp +++ b/library/cpp/archive/directory_models_archive_reader_ut.cpp @@ -1,55 +1,55 @@ -#include "directory_models_archive_reader.h" - +#include "directory_models_archive_reader.h" + #include <library/cpp/testing/unittest/registar.h> - -#include <util/folder/tempdir.h> -#include <util/string/cast.h> -#include <util/stream/file.h> -#include <util/system/tempfile.h> -#include <util/memory/blob.h> - -class TDirectoryModelsArchiveReaderTest: public TTestBase { - UNIT_TEST_SUITE(TDirectoryModelsArchiveReaderTest) - UNIT_TEST(TestRead); - UNIT_TEST_SUITE_END(); - -private: - void TestRead(); -}; - -UNIT_TEST_SUITE_REGISTRATION(TDirectoryModelsArchiveReaderTest); - -const TString MAIN_DIR = "./dir"; -const TString SUBDIR = "/subdir"; -const TString SAMPLE_FILE1 = "/sample1"; -const TString SAMPLE_FILE2 = "/sample2"; -const TString TEST_TEXT = "Test Text."; - -void TDirectoryModelsArchiveReaderTest::TestRead() { - TTempDir mainDir(MAIN_DIR); - TTempDir subDir(MAIN_DIR + SUBDIR); - TTempFileHandle file1(MAIN_DIR + SAMPLE_FILE1); - TTempFileHandle file2(MAIN_DIR + SUBDIR + SAMPLE_FILE2); - - file1.Write(TEST_TEXT.data(), TEST_TEXT.size()); - file1.FlushData(); - - TDirectoryModelsArchiveReader reader(MAIN_DIR, false); - - UNIT_ASSERT_EQUAL(reader.Count(), 2); - - UNIT_ASSERT(reader.Has(SAMPLE_FILE1)); - UNIT_ASSERT(reader.Has(SUBDIR + SAMPLE_FILE2)); - - UNIT_ASSERT_EQUAL(reader.KeyByIndex(0), SAMPLE_FILE1); - UNIT_ASSERT_EQUAL(reader.KeyByIndex(1), SUBDIR + SAMPLE_FILE2); - - TBlob blob = reader.BlobByKey(SAMPLE_FILE1); - Cout << "'" << TString(blob.AsCharPtr(), blob.Size()) << "' - '" << TEST_TEXT << "'" << Endl; - UNIT_ASSERT_VALUES_EQUAL(TString(blob.AsCharPtr(), blob.Size()), TString(TEST_TEXT)); - - TAutoPtr<IInputStream> is = reader.ObjectByKey(SAMPLE_FILE1); - const TString data = is->ReadAll(); - Cout << "'" << data << "' - '" << TEST_TEXT << "'" << Endl; - UNIT_ASSERT_VALUES_EQUAL(data, TEST_TEXT); -} + +#include <util/folder/tempdir.h> +#include <util/string/cast.h> +#include <util/stream/file.h> +#include <util/system/tempfile.h> +#include <util/memory/blob.h> + +class TDirectoryModelsArchiveReaderTest: public TTestBase { + UNIT_TEST_SUITE(TDirectoryModelsArchiveReaderTest) + UNIT_TEST(TestRead); + UNIT_TEST_SUITE_END(); + +private: + void TestRead(); +}; + +UNIT_TEST_SUITE_REGISTRATION(TDirectoryModelsArchiveReaderTest); + +const TString MAIN_DIR = "./dir"; +const TString SUBDIR = "/subdir"; +const TString SAMPLE_FILE1 = "/sample1"; +const TString SAMPLE_FILE2 = "/sample2"; +const TString TEST_TEXT = "Test Text."; + +void TDirectoryModelsArchiveReaderTest::TestRead() { + TTempDir mainDir(MAIN_DIR); + TTempDir subDir(MAIN_DIR + SUBDIR); + TTempFileHandle file1(MAIN_DIR + SAMPLE_FILE1); + TTempFileHandle file2(MAIN_DIR + SUBDIR + SAMPLE_FILE2); + + file1.Write(TEST_TEXT.data(), TEST_TEXT.size()); + file1.FlushData(); + + TDirectoryModelsArchiveReader reader(MAIN_DIR, false); + + UNIT_ASSERT_EQUAL(reader.Count(), 2); + + UNIT_ASSERT(reader.Has(SAMPLE_FILE1)); + UNIT_ASSERT(reader.Has(SUBDIR + SAMPLE_FILE2)); + + UNIT_ASSERT_EQUAL(reader.KeyByIndex(0), SAMPLE_FILE1); + UNIT_ASSERT_EQUAL(reader.KeyByIndex(1), SUBDIR + SAMPLE_FILE2); + + TBlob blob = reader.BlobByKey(SAMPLE_FILE1); + Cout << "'" << TString(blob.AsCharPtr(), blob.Size()) << "' - '" << TEST_TEXT << "'" << Endl; + UNIT_ASSERT_VALUES_EQUAL(TString(blob.AsCharPtr(), blob.Size()), TString(TEST_TEXT)); + + TAutoPtr<IInputStream> is = reader.ObjectByKey(SAMPLE_FILE1); + const TString data = is->ReadAll(); + Cout << "'" << data << "' - '" << TEST_TEXT << "'" << Endl; + UNIT_ASSERT_VALUES_EQUAL(data, TEST_TEXT); +} diff --git a/library/cpp/archive/models_archive_reader.h b/library/cpp/archive/models_archive_reader.h index ea237aecb0..2b1af92488 100644 --- a/library/cpp/archive/models_archive_reader.h +++ b/library/cpp/archive/models_archive_reader.h @@ -1,20 +1,20 @@ -#pragma once - -#include <util/generic/fwd.h> -#include <util/generic/ptr.h> - -class IInputStream; - -class TBlob; - -class IModelsArchiveReader { -public: +#pragma once + +#include <util/generic/fwd.h> +#include <util/generic/ptr.h> + +class IInputStream; + +class TBlob; + +class IModelsArchiveReader { +public: virtual ~IModelsArchiveReader() = default; - virtual size_t Count() const = 0; - virtual TString KeyByIndex(size_t n) const = 0; - virtual bool Has(const TStringBuf key) const = 0; - virtual TAutoPtr<IInputStream> ObjectByKey(const TStringBuf key) const = 0; - virtual TBlob ObjectBlobByKey(const TStringBuf key) const = 0; - virtual TBlob BlobByKey(const TStringBuf key) const = 0; - virtual bool Compressed() const = 0; -}; + virtual size_t Count() const = 0; + virtual TString KeyByIndex(size_t n) const = 0; + virtual bool Has(const TStringBuf key) const = 0; + virtual TAutoPtr<IInputStream> ObjectByKey(const TStringBuf key) const = 0; + virtual TBlob ObjectBlobByKey(const TStringBuf key) const = 0; + virtual TBlob BlobByKey(const TStringBuf key) const = 0; + virtual bool Compressed() const = 0; +}; diff --git a/library/cpp/archive/ut/ya.make b/library/cpp/archive/ut/ya.make index 4f324ccfc6..4a8ae4da06 100644 --- a/library/cpp/archive/ut/ya.make +++ b/library/cpp/archive/ut/ya.make @@ -10,7 +10,7 @@ SRCDIR(library/cpp/archive) SRCS( yarchive_ut.cpp - directory_models_archive_reader_ut.cpp + directory_models_archive_reader_ut.cpp ) END() diff --git a/library/cpp/archive/ya.make b/library/cpp/archive/ya.make index 65d36479ef..497f9b13b4 100644 --- a/library/cpp/archive/ya.make +++ b/library/cpp/archive/ya.make @@ -5,8 +5,8 @@ OWNER(pg) SRCS( yarchive.cpp yarchive.h - directory_models_archive_reader.cpp - directory_models_archive_reader.h + directory_models_archive_reader.cpp + directory_models_archive_reader.h ) END() diff --git a/library/cpp/archive/yarchive.cpp b/library/cpp/archive/yarchive.cpp index 1becc3e5da..89be4a17ee 100644 --- a/library/cpp/archive/yarchive.cpp +++ b/library/cpp/archive/yarchive.cpp @@ -367,7 +367,7 @@ TArchiveReader::TArchiveReader(const TBlob& data) { } -TArchiveReader::~TArchiveReader() {} +TArchiveReader::~TArchiveReader() {} size_t TArchiveReader::Count() const noexcept { return Impl_->Count(); diff --git a/library/cpp/archive/yarchive.h b/library/cpp/archive/yarchive.h index 8120bcb940..7822007d23 100644 --- a/library/cpp/archive/yarchive.h +++ b/library/cpp/archive/yarchive.h @@ -1,11 +1,11 @@ #pragma once -#include "models_archive_reader.h" - +#include "models_archive_reader.h" + #include <util/generic/fwd.h> #include <util/generic/ptr.h> - + class IInputStream; class IOutputStream; @@ -29,7 +29,7 @@ private: THolder<TImpl> Impl_; }; -class TArchiveReader : public IModelsArchiveReader { +class TArchiveReader : public IModelsArchiveReader { public: explicit TArchiveReader(const TBlob& data); ~TArchiveReader() override; |