Changeset 2193
- Timestamp:
- 07/22/21 14:05:58 (4 years ago)
- Location:
- XIOS/dev/dev_ym/XIOS_COUPLING/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/binary_arithmetic_filter.cpp
r804 r2193 1 1 #include "binary_arithmetic_filter.hpp" 2 #include "workflow_graph.hpp" 2 3 3 4 namespace xios … … 9 10 { /* Nothing to do */ }; 10 11 12 std::pair<int, int> CScalarFieldArithmeticFilter::buildGraph(std::vector<CDataPacketPtr> data) 13 { 14 bool building_graph = this->graphEnabled; 15 int unique_filter_id; 16 bool firstround = true; 17 18 if(building_graph) 19 { 20 if(!data[0]->graphPackage) 21 { 22 data[0]->graphPackage = new CGraphDataPackage; 23 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 24 data[0]->graphPackage->fromFilter = -1; 25 } 26 27 if(!CWorkflowGraph::mapHashFilterID_) CWorkflowGraph::mapHashFilterID_ = new std::unordered_map <size_t, int>; 28 29 size_t filterhash = std::hash<StdString>{}(this->graphPackage->inFields[0]->content+to_string(data[0]->timestamp)+this->graphPackage->inFields[0]->getId()); 30 31 // first round 32 if(CWorkflowGraph::mapHashFilterID_->find(filterhash) == CWorkflowGraph::mapHashFilterID_->end()) 33 { 34 this->graphPackage->filterId = CWorkflowGraph::getNodeSize(); 35 unique_filter_id = this->graphPackage->filterId; 36 CWorkflowGraph::addNode("Arithmetic filter\\n ("+this->graphPackage->inFields[0]->content+")", 4, false, 0, data[0]); 37 38 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]); 39 data[0]->graphPackage->fromFilter = this->graphPackage->filterId; 40 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 41 std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); 42 43 44 (*CWorkflowGraph::mapHashFilterID_)[filterhash] = unique_filter_id; 45 46 } 47 // not first round 48 else 49 { 50 unique_filter_id = (*CWorkflowGraph::mapHashFilterID_)[filterhash]; 51 if(data[0]->graphPackage->fromFilter != unique_filter_id) 52 { 53 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, unique_filter_id, data[0]); 54 } 55 } 56 } 57 58 return std::make_pair(building_graph, unique_filter_id); 59 } 60 11 61 CDataPacketPtr CScalarFieldArithmeticFilter::apply(std::vector<CDataPacketPtr> data) 12 62 { … … 15 65 packet->timestamp = data[0]->timestamp; 16 66 packet->status = data[0]->status; 67 68 std::pair<int, int> graph = buildGraph(data); 69 70 if(std::get<0>(graph)) 71 { 72 packet->graphPackage = new CGraphDataPackage; 73 packet->graphPackage->fromFilter = std::get<1>(graph); 74 packet->graphPackage->currentField = this->graphPackage->inFields[0]; 75 } 17 76 18 77 if (packet->status == CDataPacket::NO_ERROR) … … 28 87 { /* Nothing to do */ }; 29 88 89 std::pair<int, int> CFieldScalarArithmeticFilter::buildGraph(std::vector<CDataPacketPtr> data) 90 { 91 bool building_graph = this->graphEnabled; 92 int unique_filter_id; 93 bool firstround = true; 94 95 if(building_graph) 96 { 97 if(!data[0]->graphPackage) 98 { 99 data[0]->graphPackage = new CGraphDataPackage; 100 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 101 data[0]->graphPackage->fromFilter = -1; 102 } 103 104 if(!CWorkflowGraph::mapHashFilterID_) CWorkflowGraph::mapHashFilterID_ = new std::unordered_map <size_t, int>; 105 106 size_t filterhash = std::hash<StdString>{}(this->graphPackage->inFields[0]->content+to_string(data[0]->timestamp)+this->graphPackage->inFields[0]->getId()); 107 108 // first round 109 if(CWorkflowGraph::mapHashFilterID_->find(filterhash) == CWorkflowGraph::mapHashFilterID_->end()) 110 { 111 this->graphPackage->filterId = CWorkflowGraph::getNodeSize(); 112 unique_filter_id = this->graphPackage->filterId; 113 CWorkflowGraph::addNode("Arithmetic filter\\n ("+this->graphPackage->inFields[0]->content+")", 4, false, 0, data[0]); 114 115 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]); 116 data[0]->graphPackage->fromFilter = this->graphPackage->filterId; 117 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 118 std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); 119 120 121 (*CWorkflowGraph::mapHashFilterID_)[filterhash] = unique_filter_id; 122 123 } 124 // not first round 125 else 126 { 127 unique_filter_id = (*CWorkflowGraph::mapHashFilterID_)[filterhash]; 128 if(data[0]->graphPackage->fromFilter != unique_filter_id) 129 { 130 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, unique_filter_id, data[0]); 131 } 132 } 133 } 134 135 return std::make_pair(building_graph, unique_filter_id); 136 } 137 30 138 CDataPacketPtr CFieldScalarArithmeticFilter::apply(std::vector<CDataPacketPtr> data) 31 139 { … … 35 143 packet->status = data[0]->status; 36 144 145 std::pair<int, int> graph = buildGraph(data); 146 147 if(std::get<0>(graph)) 148 { 149 packet->graphPackage = new CGraphDataPackage; 150 packet->graphPackage->fromFilter = std::get<1>(graph); 151 packet->graphPackage->currentField = this->graphPackage->inFields[0]; 152 } 153 37 154 if (packet->status == CDataPacket::NO_ERROR) 38 155 packet->data.reference(op(data[0]->data, value)); … … 46 163 { /* Nothing to do */ }; 47 164 165 std::pair<int, int> CFieldFieldArithmeticFilter::buildGraph(std::vector<CDataPacketPtr> data) 166 { 167 bool building_graph = this->graphEnabled; 168 int unique_filter_id; 169 bool firstround = true; 170 171 if(building_graph) 172 { 173 if(!data[0]->graphPackage) 174 { 175 data[0]->graphPackage = new CGraphDataPackage; 176 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 177 data[0]->graphPackage->fromFilter = -1; 178 } 179 if(!data[1]->graphPackage) 180 { 181 data[1]->graphPackage = new CGraphDataPackage; 182 data[1]->graphPackage->currentField = this->graphPackage->inFields[0]; 183 data[1]->graphPackage->fromFilter = -1; 184 } 185 186 if(!CWorkflowGraph::mapHashFilterID_) CWorkflowGraph::mapHashFilterID_ = new std::unordered_map <size_t, int>; 187 188 size_t filterhash = std::hash<StdString>{}(this->graphPackage->inFields[0]->content+to_string(data[0]->timestamp)+this->graphPackage->inFields[0]->getId()); 189 190 // first round 191 if(CWorkflowGraph::mapHashFilterID_->find(filterhash) == CWorkflowGraph::mapHashFilterID_->end()) 192 { 193 this->graphPackage->filterId = CWorkflowGraph::getNodeSize(); 194 unique_filter_id = this->graphPackage->filterId; 195 CWorkflowGraph::addNode("Arithmetic filter\\n ("+this->graphPackage->inFields[0]->content+")", 4, false, 0, data[0]); 196 197 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]); 198 data[0]->graphPackage->fromFilter = this->graphPackage->filterId; 199 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 200 201 CWorkflowGraph::addEdge(data[1]->graphPackage->fromFilter, this->graphPackage->filterId, data[1]); 202 data[1]->graphPackage->fromFilter = this->graphPackage->filterId; 203 data[1]->graphPackage->currentField = this->graphPackage->inFields[0]; 204 205 std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); 206 207 (*CWorkflowGraph::mapHashFilterID_)[filterhash] = unique_filter_id; 208 209 } 210 // not first round 211 else 212 { 213 unique_filter_id = (*CWorkflowGraph::mapHashFilterID_)[filterhash]; 214 if(data[0]->graphPackage->fromFilter != unique_filter_id) 215 { 216 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, unique_filter_id, data[0]); 217 } 218 if(data[1]->graphPackage->fromFilter != unique_filter_id) 219 { 220 CWorkflowGraph::addEdge(data[1]->graphPackage->fromFilter, unique_filter_id, data[1]); 221 } 222 } 223 } 224 225 return std::make_pair(building_graph, unique_filter_id); 226 } 227 228 48 229 CDataPacketPtr CFieldFieldArithmeticFilter::apply(std::vector<CDataPacketPtr> data) 49 230 { … … 51 232 packet->date = data[0]->date; 52 233 packet->timestamp = data[0]->timestamp; 234 235 std::pair<int, int> graph = buildGraph(data); 236 237 if(std::get<0>(graph)) 238 { 239 packet->graphPackage = new CGraphDataPackage; 240 packet->graphPackage->fromFilter = std::get<1>(graph); 241 packet->graphPackage->currentField = this->graphPackage->inFields[0]; 242 } 53 243 54 244 if (data[0]->status != CDataPacket::NO_ERROR) -
XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/binary_arithmetic_filter.hpp
r1542 r2193 35 35 */ 36 36 CDataPacketPtr virtual apply(std::vector<CDataPacketPtr> data); 37 std::pair<int, int> virtual buildGraph(std::vector<CDataPacketPtr> data); 37 38 }; // class CScalarFieldArithmeticFilter 38 39 … … 63 64 */ 64 65 CDataPacketPtr virtual apply(std::vector<CDataPacketPtr> data); 66 std::pair<int, int> virtual buildGraph(std::vector<CDataPacketPtr> data); 65 67 }; // class CFieldScalarArithmeticFilter 66 68 … … 89 91 */ 90 92 CDataPacketPtr virtual apply(std::vector<CDataPacketPtr> data); 93 std::pair<int, int> virtual buildGraph(std::vector<CDataPacketPtr> data); 94 91 95 }; // class CFieldFieldArithmeticFilter 92 96 } // namespace xios -
XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/temporal_filter.cpp
r2143 r2193 30 30 , isFirstOperation(true) 31 31 , graphCycleCompleted(true) 32 , temporalOperation(opId) 32 33 { 34 } 35 36 std::string CTemporalFilter::getTemporalOperation() 37 { 38 return this->temporalOperation; 33 39 } 34 40 … … 45 51 { 46 52 this->graphPackage->filterId = CWorkflowGraph::getNodeSize(); 47 CWorkflowGraph::addNode("Temporal filter ", 3, false, 0, data[0]);53 CWorkflowGraph::addNode("Temporal filter \\n("+getTemporalOperation()+")", 3, false, 0, data[0]); 48 54 graphCycleCompleted = false; 49 55 } … … 54 60 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]); 55 61 data[0]->graphPackage->fromFilter = this->graphPackage->filterId; 56 this->graphPackage->sourceFilterIds.push_back(data[0]->graphPackage->fromFilter);62 // this->graphPackage->sourceFilterIds.push_back(data[0]->graphPackage->fromFilter); 57 63 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 58 64 std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); -
XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/temporal_filter.hpp
r2143 r2193 55 55 bool virtual isDataExpected(const CDate& date) const; 56 56 bool graphCycleCompleted; 57 std::string getTemporalOperation(); 57 58 58 59 private: … … 73 74 // CDate nextOperationDate; //!< The date of the next operation 74 75 bool isFirstOperation; //!< True before the first operation was been computed 76 const std::string temporalOperation; 75 77 }; // class CTemporalFilter 76 78 } // namespace xios -
XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/unary_arithmetic_filter.cpp
r643 r2193 1 1 #include "unary_arithmetic_filter.hpp" 2 #include "workflow_graph.hpp" 3 2 4 3 5 namespace xios … … 8 10 { /* Nothing to do */ }; 9 11 12 std::pair<int, int> CUnaryArithmeticFilter::buildGraph(std::vector<CDataPacketPtr> data) 13 { 14 bool building_graph = this->graphEnabled; 15 int unique_filter_id; 16 bool firstround = true; 17 18 if(building_graph) 19 { 20 if(!data[0]->graphPackage) 21 { 22 data[0]->graphPackage = new CGraphDataPackage; 23 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 24 data[0]->graphPackage->fromFilter = -1; 25 } 26 27 if(!CWorkflowGraph::mapHashFilterID_) CWorkflowGraph::mapHashFilterID_ = new std::unordered_map <size_t, int>; 28 29 size_t filterhash = std::hash<StdString>{}(this->graphPackage->inFields[0]->content+to_string(data[0]->timestamp)+this->graphPackage->inFields[0]->getId()); 30 31 // first round 32 if(CWorkflowGraph::mapHashFilterID_->find(filterhash) == CWorkflowGraph::mapHashFilterID_->end()) 33 { 34 this->graphPackage->filterId = CWorkflowGraph::getNodeSize(); 35 unique_filter_id = this->graphPackage->filterId; 36 CWorkflowGraph::addNode("Arithmetic filter\\n ("+this->graphPackage->inFields[0]->content+")", 4, false, 0, data[0]); 37 38 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]); 39 data[0]->graphPackage->fromFilter = this->graphPackage->filterId; 40 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 41 std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); 42 43 44 (*CWorkflowGraph::mapHashFilterID_)[filterhash] = unique_filter_id; 45 46 } 47 // not first round 48 else 49 { 50 unique_filter_id = (*CWorkflowGraph::mapHashFilterID_)[filterhash]; 51 if(data[0]->graphPackage->fromFilter != unique_filter_id) 52 { 53 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, unique_filter_id, data[0]); 54 } 55 } 56 } 57 58 return std::make_pair(building_graph, unique_filter_id); 59 } 60 61 10 62 CDataPacketPtr CUnaryArithmeticFilter::apply(std::vector<CDataPacketPtr> data) 11 63 { … … 15 67 packet->status = data[0]->status; 16 68 69 std::pair<int, int> graph = buildGraph(data); 70 71 if(std::get<0>(graph)) 72 { 73 packet->graphPackage = new CGraphDataPackage; 74 packet->graphPackage->fromFilter = std::get<1>(graph); 75 packet->graphPackage->currentField = this->graphPackage->inFields[0]; 76 } 77 17 78 if (packet->status == CDataPacket::NO_ERROR) 18 79 packet->data.reference(op(data[0]->data)); -
XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/unary_arithmetic_filter.hpp
r642 r2193 34 34 */ 35 35 CDataPacketPtr virtual apply(std::vector<CDataPacketPtr> data); 36 std::pair<int, int> virtual buildGraph(std::vector<CDataPacketPtr> data); 36 37 }; // class CUnaryArithmeticFilter 37 38 } // namespace xios -
XIOS/dev/dev_ym/XIOS_COUPLING/src/graph_package.hpp
r2141 r2193 12 12 StdString contextId; 13 13 bool show; 14 std::pair< Time, Time > graphInterval; 14 15 15 16 CGraphPackage(): show(true) {} -
XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.cpp
r2182 r2193 559 559 { 560 560 if (buildWorkflowGraphDone_) return true ; 561 561 562 562 563 const bool detectMissingValues = (!detect_missing_value.isEmpty() && !default_value.isEmpty() && detect_missing_value == true); 563 564 const double defaultValue = detectMissingValues ? default_value : (!default_value.isEmpty() ? default_value : 0.0); 564 565 bool buildGraph_ = !build_workflow_graph.isEmpty() && build_workflow_graph == true ; 565 info(100)<<"=== Workflow Graph === field id="<<this->getId()<<" build_workflow_graph="<<buildGraph_<<std::endl; 566 566 567 if (!inputFilter) inputFilter = std::shared_ptr<CPassThroughFilter>(new CPassThroughFilter(gc)); 567 568 568 569 if (hasDirectFieldReference()) 569 570 { 570 571 CField* fieldRef = getDirectFieldReference(); 571 info(100)<<"=== Workflow Graph === fieldRef id="<<fieldRef->getId()<<std::endl; 572 572 573 573 //------ build_workflow_graph start 574 574 if(buildGraph_) … … 580 580 this->build_workflow_graph.set(fieldRef->build_workflow_graph); 581 581 buildGraph_ = !build_workflow_graph.isEmpty() && build_workflow_graph == true ; 582 info(100)<<"=== Workflow Graph === field id="<<this->getId()<<" updated build_workflow_graph="<<buildGraph_<<std::endl;583 582 } 584 583 585 584 586 if(buildGraph_) this->build_workflow_graph.set(build_workflow_graph);585 // if(buildGraph_) this->build_workflow_graph.set(build_workflow_graph); 587 586 //------ build_workflow_graph end 588 587 … … 604 603 boost::scoped_ptr<IFilterExprNode> expr(parseExpr(getExpression() + '\0')); 605 604 filterExpr = expr->reduce(gc, *this); 605 606 606 607 if (!filterExpr) return false ; // workflow graph cannot be built at this stage 607 608 } … … 636 637 if(buildGraph_) 637 638 { 638 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a transformation filter 2 ============== "<<getDirectFieldReference()->getInstantDataFilter()<<" _ "<<inputFilter<<std::endl;639 639 inputFilter->graphEnabled=true; 640 640 inputFilter->graphPackage = new CGraphPackage; … … 648 648 if (hasExpression()) 649 649 { 650 if (filterExpr) lastFilter=filterExpr ; 650 if (filterExpr) 651 { 652 lastFilter=filterExpr ; 653 } 651 654 } 652 655 … … 716 719 if(buildGraph_) 717 720 { 718 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToFileServer ============== "<<getTemporalDataFilter(gc, fileOut_->output_freq)<<" _ "<<clientToServerStoreFilter_<<std::endl;719 721 clientToServerStoreFilter_->graphPackage = new CGraphPackage; 720 722 clientToServerStoreFilter_->graphEnabled = true; … … 731 733 if(buildGraph_) 732 734 { 733 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToCouplerOut ============== "<<instantDataFilter<<" _ "<<clientToServerStoreFilter_<<std::endl;734 735 clientToServerStoreFilter_->graphPackage = new CGraphPackage; 735 736 clientToServerStoreFilter_->graphEnabled = true; … … 753 754 if(buildGraph_ ) 754 755 { 755 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToModelInput ============== "<<modelToClientSourceFilter_<<" _ "<<inputFilter<<" ***** "<<std::endl;756 756 modelToClientSourceFilter_->graphPackage = new CGraphPackage; 757 757 modelToClientSourceFilter_->graphEnabled = true; … … 770 770 if(buildGraph_) 771 771 { 772 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToClientInput ============== "<<serverFromClientSourceFilter_ << " _ "<<inputFilter<<" ***** "<<std::endl;773 772 serverFromClientSourceFilter_->graphPackage = new CGraphPackage; 774 773 serverFromClientSourceFilter_->graphEnabled = true; … … 789 788 if(buildGraph_) 790 789 { 791 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToServerInput ============== "<<clientFromServerSourceFilter_ << " _ "<<inputFilter<<std::endl;792 790 clientFromServerSourceFilter_->graphPackage = new CGraphPackage; 793 791 clientFromServerSourceFilter_->graphEnabled = true; … … 810 808 if(buildGraph_) 811 809 { 812 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToCouplerIn ============== "<<clientFromClientSourceFilter_ << " _ "<<inputFilter<<std::endl;813 810 clientFromClientSourceFilter_->graphPackage = new CGraphPackage; 814 811 clientFromClientSourceFilter_->graphEnabled = true; … … 827 824 if(buildGraph_) 828 825 { 829 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToFileWriter ============== "<<instantDataFilter << " _ "<<fileWriterStoreFilter_<<std::endl;830 826 fileWriterStoreFilter_->graphPackage = new CGraphPackage; 831 827 fileWriterStoreFilter_->graphEnabled = true; … … 844 840 if(buildGraph_) 845 841 { 846 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToFileReader ============== "<<fileReaderSourceFilter_ << " _ "<<inputFilter<<std::endl;847 842 fileReaderSourceFilter_->graphPackage = new CGraphPackage; 848 843 fileReaderSourceFilter_->graphEnabled = true; … … 862 857 if(buildGraph_) 863 858 { 864 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToModelOutput ============== "<<instantDataFilter << " _ "<<clientToModelStoreFilter_<<std::endl;865 859 clientToModelStoreFilter_->graphPackage = new CGraphPackage; 866 860 clientToModelStoreFilter_->graphEnabled = true; … … 878 872 if(buildGraph_) 879 873 { 880 info(100)<<"=== Workflow Graph === field "<<this->getId()<<" calls a connectToServerToClient ============== "<<instantDataFilter << " _ "<<serverToClientStoreFilter_<<std::endl;881 874 serverToClientStoreFilter_->graphPackage = new CGraphPackage; 882 875 serverToClientStoreFilter_->graphEnabled = true; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/parse_expr/filter_expr_node.cpp
r1869 r2193 41 41 42 42 bool ret=field->buildWorkflowGraph(gc); 43 if(field->build_workflow_graph) thisField.build_workflow_graph.set(field->build_workflow_graph); 43 44 if (ret) outputPin = field->getInstantDataFilter(); // if dependency is complete build the graph other return nullptr 45 44 46 } 45 47 else ERROR("boost::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const", … … 110 112 if (ret) ret->connectOutput(filter, 0); 111 113 else filter.reset() ; 114 115 const bool buildGraph_ = !(thisField.build_workflow_graph.isEmpty()) && thisField.build_workflow_graph == true ; 116 if(buildGraph_) 117 { 118 filter->graphPackage = new CGraphPackage; 119 filter->graphEnabled = true; 120 filter->graphPackage->inFields.push_back(&thisField); 121 } 122 112 123 return filter; 113 124 } … … 130 141 if (ret) ret->connectOutput(filter, 0); 131 142 else filter.reset() ; 143 144 const bool buildGraph_ = !(thisField.build_workflow_graph.isEmpty()) && thisField.build_workflow_graph == true ; 145 if(buildGraph_) 146 { 147 filter->graphPackage = new CGraphPackage; 148 filter->graphEnabled = true; 149 filter->graphPackage->inFields.push_back(&thisField); 150 } 151 132 152 return filter; 133 153 } … … 149 169 if (ret) ret->connectOutput(filter, 0); 150 170 else filter.reset() ; 171 172 const bool buildGraph_ = !(thisField.build_workflow_graph.isEmpty()) && thisField.build_workflow_graph == true ; 173 if(buildGraph_) 174 { 175 filter->graphPackage = new CGraphPackage; 176 filter->graphEnabled = true; 177 filter->graphPackage->inFields.push_back(&thisField); 178 } 151 179 return filter; 152 180 } … … 173 201 } 174 202 else filter.reset() ; 203 204 const bool buildGraph_ = !(thisField.build_workflow_graph.isEmpty()) && thisField.build_workflow_graph == true ; 205 if(buildGraph_) 206 { 207 filter->graphPackage = new CGraphPackage; 208 filter->graphEnabled = true; 209 filter->graphPackage->inFields.push_back(&thisField); 210 } 211 175 212 return filter; 176 213 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/workflow_graph.cpp
r2141 r2193 17 17 bool CWorkflowGraph::build_begin = false; 18 18 19 std::unordered_map <size_t, int> *CWorkflowGraph::mapHashFilterID_ = 0; 20 std::unordered_map <size_t, int> *CWorkflowGraph::mapHashFilterID_srv_ = 0; 21 19 22 20 23 CWorkflowGraph::CWorkflowGraph() … … 29 32 for(int i=0; i<vectorOfNodes_->size(); i++) 30 33 { 34 std::cout<<"Node["<<i<<"] is "<<(*vectorOfNodes_)[i].filter_name<<std::endl; 31 35 info(100)<<"Node["<<i<<"] is "<<(*vectorOfNodes_)[i].filter_name<<std::endl; 32 36 } … … 34 38 for(int i=0; i<vectorOfEdges_->size(); i++) 35 39 { 40 std::cout<<"Edge["<<i<<"] from "<<(*vectorOfEdges_)[i].from<<" to "<<(*vectorOfEdges_)[i].to<<std::endl; 36 41 info(100)<<"Edge["<<i<<"] from "<<(*vectorOfEdges_)[i].from<<" to "<<(*vectorOfEdges_)[i].to<<std::endl; 37 42 } … … 85 90 if(CXios::isClient) 86 91 { 92 // if(vectorOfEdges_&&vectorOfNodes_) outputWorkflowGraph_client_stdout(); 93 // std::cout<<"Trying to add an edge from "<<from<<" to "<<to<<std::endl; 87 94 if(!vectorOfEdges_) vectorOfEdges_ = new std::vector<graph_edge_object>; 88 95 std::string currentContextId = CContext::getCurrent()->getId(); … … 158 165 if(CXios::isClient) 159 166 { 167 //if(vectorOfEdges_&&vectorOfNodes_) outputWorkflowGraph_client_stdout(); 168 // std::cout<<"Trying to add a node naming "<<filterName<<std::endl; 160 169 if(!vectorOfNodes_) vectorOfNodes_ = new std::vector<graph_node_object>; 161 170 if(!vectorOfContexts_) vectorOfContexts_ = new std::vector<StdString>; 171 if(!mapHashFilterID_) mapHashFilterID_ = new std::unordered_map <size_t, int>; 172 162 173 std::string currentContextId = CContext::getCurrent()->getId(); 163 174 if ( std::find(vectorOfContexts_->begin(), vectorOfContexts_->end(), currentContextId) == vectorOfContexts_->end() ) … … 172 183 node_obj.date = packet->date; 173 184 node_obj.timestamp = packet->timestamp; 185 174 186 for(int i=0; i<vectorOfContexts_->size(); i++) 175 187 { … … 181 193 } 182 194 } 195 183 196 node_obj.attributes = packet->graphPackage->currentField->recordXiosAttributes(); 184 197 185 198 vectorOfNodes_->push_back(node_obj); 186 //info(100)<<"****************** Add node "<<filterName<<std::endl;187 199 } 188 200 else … … 190 202 if(!vectorOfNodes_srv_) vectorOfNodes_srv_ = new std::vector<graph_node_object>; 191 203 if(!vectorOfContexts_srv_) vectorOfContexts_srv_ = new std::vector<StdString>; 204 if(!mapHashFilterID_srv_) mapHashFilterID_srv_ = new std::unordered_map <size_t, int>; 205 192 206 std::string currentContextId = CContext::getCurrent()->getId(); 193 207 if ( std::find(vectorOfContexts_srv_->begin(), vectorOfContexts_srv_->end(), currentContextId) == vectorOfContexts_srv_->end() ) … … 213 227 214 228 vectorOfNodes_srv_->push_back(node_obj); 215 //info(100)<<"******************Server side : Add node "<<filterName<<std::endl;216 229 } 217 230 -
XIOS/dev/dev_ym/XIOS_COUPLING/src/workflow_graph.hpp
r2141 r2193 78 78 static std::vector<StdString> *vectorOfContexts_srv_; 79 79 80 static std::unordered_map <size_t, int> *mapHashFilterID_; 81 static std::unordered_map <size_t, int> *mapHashFilterID_srv_; 82 80 83 // these variables are not yet used 81 84 static bool clientGraphBuilt;
Note: See TracChangeset
for help on using the changeset viewer.