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

Side by Side Diff: graph_utils.h

Issue 3596007: AU: More graph utilities (Closed) Base URL: ssh://git@chromiumos-git/update_engine.git
Patch Set: fixes for review and merge origin/master Created 10 years, 2 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 unified diff | Download patch
« no previous file with comments | « graph_types.h ('k') | graph_utils.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_GRAPH_UTILS_H__ 5 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_GRAPH_UTILS_H__
6 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_GRAPH_UTILS_H__ 6 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_GRAPH_UTILS_H__
7 7
8 #include <vector> 8 #include <vector>
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "update_engine/graph_types.h" 10 #include "update_engine/graph_types.h"
11 #include "update_engine/update_metadata.pb.h" 11 #include "update_engine/update_metadata.pb.h"
12 12
13 // A few utility functions for graphs 13 // A few utility functions for graphs
14 14
15 namespace chromeos_update_engine { 15 namespace chromeos_update_engine {
16 16
17 namespace graph_utils { 17 namespace graph_utils {
18 18
19 // Returns the number of blocks represented by all extents in the edge. 19 // Returns the number of blocks represented by all extents in the edge.
20 uint64_t EdgeWeight(const Graph& graph, const Edge& edge); 20 uint64_t EdgeWeight(const Graph& graph, const Edge& edge);
21 21
22 // These add a read-before dependency from graph[src] -> graph[dst]. If the dep
23 // already exists, the block/s is/are added to the existing edge.
24 void AddReadBeforeDep(Vertex* src,
25 Vertex::Index dst,
26 uint64_t block);
27 void AddReadBeforeDepExtents(Vertex* src,
28 Vertex::Index dst,
29 const std::vector<Extent>& extents);
30
31 void DropWriteBeforeDeps(Vertex::EdgeMap* edge_map);
32
33 // For each node N in graph, drop all edges N->|index|.
34 void DropIncomingEdgesTo(Graph* graph, Vertex::Index index);
35
22 // block must either be the next block in the last extent or a block 36 // block must either be the next block in the last extent or a block
23 // in the next extent. This function will not handle inserting block 37 // in the next extent. This function will not handle inserting block
24 // into an arbitrary place in the extents. 38 // into an arbitrary place in the extents.
25 void AppendBlockToExtents(std::vector<Extent>* extents, uint64_t block); 39 void AppendBlockToExtents(std::vector<Extent>* extents, uint64_t block);
26 40
41 // Get/SetElement are intentionally overloaded so that templated functions
42 // can accept either type of collection of Extents.
43 Extent GetElement(const std::vector<Extent>& collection, size_t index);
44 Extent GetElement(
45 const google::protobuf::RepeatedPtrField<Extent>& collection,
46 size_t index);
47
48 template<typename T>
49 uint64_t BlocksInExtents(const T& collection) {
50 uint64_t ret = 0;
51 for (size_t i = 0; i < static_cast<size_t>(collection.size()); ++i) {
52 ret += GetElement(collection, i).num_blocks();
53 }
54 return ret;
55 }
56
57 void DumpGraph(const Graph& graph);
58
27 } // namespace graph_utils 59 } // namespace graph_utils
28 60
29 } // namespace chromeos_update_engine 61 } // namespace chromeos_update_engine
30 62
31 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_GRAPH_UTILS_H__ 63 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_GRAPH_UTILS_H__
OLDNEW
« no previous file with comments | « graph_types.h ('k') | graph_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698