Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Unified Diff: src/platform/update_engine/delta_diff_parser.h

Issue 545072: AU: Gut code for old updater. New protobuf for v2 updater. (Closed)
Patch Set: better comments Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/platform/update_engine/delta_diff_parser.h
diff --git a/src/platform/update_engine/delta_diff_parser.h b/src/platform/update_engine/delta_diff_parser.h
index 5c6d664f79cf6c341b6f166764c5b275859250f8..e6d0b1a617e2aca2df10d61628739c71d249c2a0 100644
--- a/src/platform/update_engine/delta_diff_parser.h
+++ b/src/platform/update_engine/delta_diff_parser.h
@@ -5,128 +5,10 @@
#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_DELTA_DIFF_PARSER_H__
#define CHROMEOS_PLATFORM_UPDATE_ENGINE_DELTA_DIFF_PARSER_H__
-#include <string>
-#include <vector>
-#include "chromeos/obsolete_logging.h"
#include "base/basictypes.h"
-#include "update_engine/update_metadata.pb.h"
-
-// The DeltaDiffParser class is used to parse a delta file on disk. It will
-// copy the metadata into memory, but not the file data. This class can
-// also be used to copy file data out to disk.
-
-// The DeltaDiffParserIterator class is used to iterate through the
-// metadata of a delta file. It will return directories before their
-// children.
namespace chromeos_update_engine {
-class DeltaDiffParser;
-
-class DeltaDiffParserIterator {
- friend class DeltaDiffParser;
- public:
- void Increment();
-
- // Returns the full path for the current file, e.g. "/bin/bash".
- // Returns empty string for root.
- const std::string& path() const {
- return path_;
- }
-
- // Returns the basename for the current file. If path() returns
- // "/bin/bash", then GetName() returns "bash".
- // Returns empty string for root
- const std::string GetName() const;
-
- const DeltaArchiveManifest_File& GetFile() const;
- bool operator==(const DeltaDiffParserIterator& that) const {
- return path_indices_ == that.path_indices_ &&
- child_indices_ == that.child_indices_ &&
- path_ == that.path_ &&
- archive_ == that.archive_;
- }
- bool operator!=(const DeltaDiffParserIterator& that) const {
- return !(*this == that);
- }
- private:
- // Container of all the File messages. Each File message has an index
- // in archive_. The root directory is always stored at index 0.
- const DeltaArchiveManifest* archive_;
-
- // These variables are used to implement the common recursive depth-first
- // search algorithm (which we can't use here, since we need to walk the
- // tree incrementally).
-
- // Indices into 'archive_' of the current path components. For example, if
- // the current path is "/bin/bash", 'path_stack_' will contain the archive
- // indices for "/", "/bin", and "/bin/bash", in that order. This is
- // analogous to the call stack of the recursive algorithm.
- std::vector<int> path_indices_;
-
- // For each component in 'path_stack_', the currently-selected child in its
- // child vector. In the previous example, if "/" has "abc" and "bin"
- // subdirectories and "/bin" contains only "bash", this will contain
- // [0, 1, 0], since we are using the 0th child at the root directory level
- // (there's only one child there), the first of the root dir's children
- // ("bin"), and the 0th child of /bin ("bash"). This is analogous to the
- // state of each function (in terms of which child it's currently
- // handling) in the call stack of the recursive algorithm.
- std::vector<int> child_indices_;
-
- std::string path_;
- // Instantiated by friend class DeltaDiffParser
- explicit DeltaDiffParserIterator(const DeltaArchiveManifest* archive)
- : archive_(archive) {}
- DeltaDiffParserIterator() {
- CHECK(false); // Should never be called.
- }
-};
-
-class DeltaDiffParser {
- public:
- DeltaDiffParser(const std::string& delta_file);
- ~DeltaDiffParser();
- bool valid() const { return valid_; }
- bool ContainsPath(const std::string& path) const;
- const DeltaArchiveManifest_File& GetFileAtPath(const std::string& path) const;
-
- // Reads length bytes at offset of the delta file into the out string
- // or vector. Be careful not to call this with large length values,
- // since that much memory will have to be allocated to store the output.
- // Returns true on success.
- bool ReadDataVector(off_t offset, off_t length, std::vector<char>* out) const;
-
- // Copies length bytes of data from offset into a new file at path specified.
- // If should_decompress is true, will gzip decompress while writing to the
- // file. Returns true on success.
- bool CopyDataToFile(off_t offset, off_t length, bool should_decompress,
- const std::string& path) const;
-
- typedef DeltaDiffParserIterator Iterator;
- const Iterator Begin();
- const Iterator End();
-
- // The identifier we expect at the beginning of a delta file.
- static const char* const kFileMagic;
-
- private:
- // (Binary) Searches the children of 'file' for one named child_name.
- // If found, returns the index into the archive. If not found, returns -1.
- int GetIndexOfFileChild(const DeltaArchiveManifest_File& file,
- const std::string& child_name) const;
-
- // Returns -1 if not found, 0 for root
- int GetIndexForPath(const std::string& path) const;
-
- // We keep a filedescriptor open to the delta file.
- int fd_;
-
- DeltaArchiveManifest archive_;
- bool valid_;
- DISALLOW_COPY_AND_ASSIGN(DeltaDiffParser);
-};
-
}; // namespace chromeos_update_engine
#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_DELTA_DIFF_PARSER_H__

Powered by Google App Engine
This is Rietveld 408576698