A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
ComputationNode.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * *
3  * Copyright 2018 Rice University *
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, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
14  * See the License for the specific language governing permissions and *
15  * limitations under the License. *
16  * *
17  *****************************************************************************/
18 
19 #ifndef COMPUTATION_NODE_H
20 #define COMPUTATION_NODE_H
21 
22 #include "Computation.h"
23 
24 namespace pdb {
25 
26 // this stores all of the information extracted about a node in the computation plan, including
27 // (a) all of the lambdas extracted from the node, and (b) a reference to the actual computation
29 
30 private:
31  // allows us to access the executors for this plan node... the key is a name of a lambda
32  std::map<std::string, GenericLambdaObjectPtr> allLambdas;
33 
34  // the computation itself
36 
37 public:
39  me = nullptr;
40  }
41 
43  allLambdas = toMe.allLambdas;
44  me = toMe.me;
45  }
46 
48  allLambdas = toMe.allLambdas;
49  me = toMe.me;
50  return *this;
51  }
52 
53  // simple constructor... extracts the set of lambdas from this compuation
55  me->extractLambdas(allLambdas);
56  }
57 
59  return *me;
60  }
61 
62  // JiaNote: add a new method to get Handle<Computation> for unsafeCast
64  return me;
65  }
66 
67  // get the particular lambda
69  if (allLambdas.count(me) == 0) {
70  std::cout << "This is bad. Didn't find a lambda corresponding to " << me << "\n";
71  exit(1);
72  }
73  return allLambdas[me];
74  }
75 };
76 }
77 
78 #endif
Handle< Computation > getComputationHandle()
std::map< std::string, GenericLambdaObjectPtr > allLambdas
GenericLambdaObjectPtr getLambda(std::string me)
std::shared_ptr< GenericLambdaObject > GenericLambdaObjectPtr
Computation & getComputation()
Handle< Computation > me
ComputationNode & operator=(const ComputationNode &toMe)
ComputationNode(Handle< Computation > &me)
ComputationNode(const ComputationNode &toMe)