GraphLab: Distributed Graph-Parallel API  2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
idistributed_ingress.hpp
1 /**
2  * Copyright (c) 2009 Carnegie Mellon University.
3  * All rights reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing,
12  * software distributed under the License is distributed on an "AS
13  * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
14  * express or implied. See the License for the specific language
15  * governing permissions and limitations under the License.
16  *
17  * For more about this software visit:
18  *
19  * http://www.graphlab.ml.cmu.edu
20  *
21  */
22 
23 #ifndef GRAPHLAB_IDISTRIBUTED_INGRESS_HPP
24 #define GRAPHLAB_IDISTRIBUTED_INGRESS_HPP
25 
26 #include <vector>
27 #include <graphlab/graph/graph_basic_types.hpp>
28 
29 
30 namespace graphlab {
31 
32  /**
33  * \brief The ingress object handles the graph ingress.
34  *
35  * The ingress load balance the incoming edges with the objective to minimize
36  * vertex replicas.
37  */
38  template<typename VertexData, typename EdgeData>
40  public:
41  virtual ~idistributed_ingress() { }
42  /**
43  * Add an edge to the ingress object.
44  */
45  virtual void add_edge(vertex_id_type source, vertex_id_type target,
46  const EdgeData& edata) = 0;
47  /**
48  * Add an vertex to the ingress object.
49  */
50  virtual void add_vertex(vertex_id_type vid, const VertexData& vdata) = 0;
51 
52  /**
53  * Finalize completes local graph data structure,
54  * and vertex record information by coordinating vertex information
55  * among the machines.
56  */
57  virtual void finalize() = 0;
58 
59  /**
60  * Exchange global graph statistics among all ingress nodes.
61  *
62  * */
63  virtual void exchange_global_info() = 0;
64 
65  }; // end of idstributed_ingress
66 
67 }; // end of namespace graphlab
68 
69 
70 
71 #endif