diff options
| author | yoda <[email protected]> | 2022-02-10 16:50:00 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:50:00 +0300 | 
| commit | ddd64736134d6d92b80a934c8cf8228944ee4236 (patch) | |
| tree | 145560960b5efdc61f39e36b4acbf2e0bf7c356d /library/cpp/on_disk/chunks | |
| parent | ae304bda46e224a4436a019a4f9181652ea4b370 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/on_disk/chunks')
| -rw-r--r-- | library/cpp/on_disk/chunks/chunked_helpers.cpp | 96 | ||||
| -rw-r--r-- | library/cpp/on_disk/chunks/chunked_helpers.h | 34 | 
2 files changed, 65 insertions, 65 deletions
| diff --git a/library/cpp/on_disk/chunks/chunked_helpers.cpp b/library/cpp/on_disk/chunks/chunked_helpers.cpp index b7adba27535..b3aa5c8234c 100644 --- a/library/cpp/on_disk/chunks/chunked_helpers.cpp +++ b/library/cpp/on_disk/chunks/chunked_helpers.cpp @@ -9,59 +9,59 @@ TBlob GetBlock(const TBlob& blob, size_t index) {      size_t begin = (const char*)reader.GetBlock(index) - (const char*)blob.Data();      return blob.SubBlob(begin, begin + reader.GetBlockLen(index));  } - -/*************************** TNamedChunkedDataReader ***************************/ - +  +/*************************** TNamedChunkedDataReader ***************************/  +   static const char* NamedChunkedDataMagic = "NamedChunkedData"; - +   TNamedChunkedDataReader::TNamedChunkedDataReader(const TBlob& blob)      : TChunkedDataReader(blob) -{ -    if (TChunkedDataReader::GetBlocksCount() < 1) -        throw yexception() << "Too few blocks"; - -    size_t block = TChunkedDataReader::GetBlocksCount() - 1; -    size_t magicLen = strlen(NamedChunkedDataMagic); -    if (GetBlockLen(block) < magicLen || memcmp(GetBlock(block), NamedChunkedDataMagic, magicLen) != 0) -        throw yexception() << "Not a valid named chunked data file"; - +{  +    if (TChunkedDataReader::GetBlocksCount() < 1)  +        throw yexception() << "Too few blocks";  +  +    size_t block = TChunkedDataReader::GetBlocksCount() - 1;  +    size_t magicLen = strlen(NamedChunkedDataMagic);  +    if (GetBlockLen(block) < magicLen || memcmp(GetBlock(block), NamedChunkedDataMagic, magicLen) != 0)  +        throw yexception() << "Not a valid named chunked data file";  +       TMemoryInput input(static_cast<const char*>(GetBlock(block)) + magicLen, GetBlockLen(block) - magicLen); -    Load(&input, Names); - -    size_t index = 0; +    Load(&input, Names);  +  +    size_t index = 0;       for (TVector<TString>::const_iterator it = Names.begin(); it != Names.end(); ++it, ++index) { -        if (!it->empty()) -            NameToIndex[*it] = index; -    } -} - -/*************************** TNamedChunkedDataWriter ***************************/ - +        if (!it->empty())  +            NameToIndex[*it] = index;  +    }  +}  +  +/*************************** TNamedChunkedDataWriter ***************************/  +   TNamedChunkedDataWriter::TNamedChunkedDataWriter(IOutputStream& slave) -    : TChunkedDataWriter(slave) -{ -} - +    : TChunkedDataWriter(slave)  +{  +}  +   TNamedChunkedDataWriter::~TNamedChunkedDataWriter() { -} - -void TNamedChunkedDataWriter::NewBlock() { -    NewBlock(""); -} - +}  +  +void TNamedChunkedDataWriter::NewBlock() {  +    NewBlock("");  +}  +   void TNamedChunkedDataWriter::NewBlock(const TString& name) { -    if (!name.empty()) { -        if (NameToIndex.count(name) != 0) -            throw yexception() << "Block name is not unique"; -        NameToIndex[name] = Names.size(); -    } -    Names.push_back(name); -    TChunkedDataWriter::NewBlock(); -} - -void TNamedChunkedDataWriter::WriteFooter() { -    NewBlock(""); -    Write(NamedChunkedDataMagic); -    Save(this, Names); -    TChunkedDataWriter::WriteFooter(); -} +    if (!name.empty()) {  +        if (NameToIndex.count(name) != 0)  +            throw yexception() << "Block name is not unique";  +        NameToIndex[name] = Names.size();  +    }  +    Names.push_back(name);  +    TChunkedDataWriter::NewBlock();  +}  +  +void TNamedChunkedDataWriter::WriteFooter() {  +    NewBlock("");  +    Write(NamedChunkedDataMagic);  +    Save(this, Names);  +    TChunkedDataWriter::WriteFooter();  +}  diff --git a/library/cpp/on_disk/chunks/chunked_helpers.h b/library/cpp/on_disk/chunks/chunked_helpers.h index 5fa96afdca0..a20bed1f62d 100644 --- a/library/cpp/on_disk/chunks/chunked_helpers.h +++ b/library/cpp/on_disk/chunks/chunked_helpers.h @@ -453,34 +453,34 @@ void WriteBlock(TChunkedDataWriter& writer, T& t) {      t.Save(writer);  } -// Extends TChunkedDataWriter, allowing user to name blocks with arbitrary strings. -class TNamedChunkedDataWriter: public TChunkedDataWriter { +// Extends TChunkedDataWriter, allowing user to name blocks with arbitrary strings.  +class TNamedChunkedDataWriter: public TChunkedDataWriter {   public:      TNamedChunkedDataWriter(IOutputStream& slave);      ~TNamedChunkedDataWriter() override; - +       // Start a new unnamed block, overrides TChunkedDataReader::NewBlock().      void NewBlock(); - +       // Start a new block with given name (possibly empty, in which case block is unnamed).      // Throws an exception if name is a duplicate.      void NewBlock(const TString& name); - +       void WriteFooter(); - +   private:      TVector<TString> Names;      THashMap<TString, size_t> NameToIndex; -}; - +};  +   class TNamedChunkedDataReader: public TChunkedDataReader {  public:      TNamedChunkedDataReader(const TBlob& blob); - +       inline bool HasBlock(const char* name) const {          return NameToIndex.find(name) != NameToIndex.end();      } - +       inline size_t GetIndexByName(const char* name) const {          THashMap<TString, size_t>::const_iterator it = NameToIndex.find(name);          if (it == NameToIndex.end()) @@ -488,31 +488,31 @@ public:          else              return it->second;      } - +       // Returns number of blocks written to the file by user of TNamedChunkedDataReader.      inline size_t GetBlocksCount() const {          // Last block is for internal usage          return TChunkedDataReader::GetBlocksCount() - 1;      } - +       inline const char* GetBlockName(size_t index) const {          Y_ASSERT(index < GetBlocksCount());          return Names[index].data();      } - +       inline const void* GetBlockByName(const char* name) const {          return GetBlock(GetIndexByName(name));      } - +       inline size_t GetBlockLenByName(const char* name) const {          return GetBlockLen(GetIndexByName(name));      } - +       inline TBlob GetBlobByName(const char* name) const {          size_t id = GetIndexByName(name);          return TBlob::NoCopy(GetBlock(id), GetBlockLen(id));      } - +       inline bool GetBlobByName(const char* name, TBlob& blob) const {          THashMap<TString, size_t>::const_iterator it = NameToIndex.find(name);          if (it == NameToIndex.end()) @@ -524,7 +524,7 @@ public:  private:      TVector<TString> Names;      THashMap<TString, size_t> NameToIndex; -}; +};   template <class T>  struct TSaveLoadVectorNonPodElement { | 
