| 141 | } |
| 142 | |
| 143 | void ModuleGraph::SetUniqueGateIdx() { |
| 144 | bess::utils::extended_priority_queue<bess::OGate *> ogates_queue; |
| 145 | bess::utils::extended_priority_queue<bess::IGate *, IGateGreater> |
| 146 | igates_queue; |
| 147 | std::unordered_set<bess::IGate *> igates_pushed; |
| 148 | |
| 149 | for (auto const &e : all_modules_) { |
| 150 | std::vector<bess::OGate *> ogates = e.second->ogates(); |
| 151 | for (size_t i = 0; i < ogates.size(); i++) { |
| 152 | if (!ogates[i]) { |
| 153 | continue; |
| 154 | } |
| 155 | |
| 156 | ogates_queue.push(ogates[i]); |
| 157 | |
| 158 | bess::IGate *igate = ogates[i]->igate(); |
| 159 | if (igates_pushed.count(igate) != 0) { |
| 160 | continue; |
| 161 | } |
| 162 | |
| 163 | igates_pushed.insert(igate); |
| 164 | igates_queue.push(igate); |
| 165 | } |
| 166 | } |
| 167 | |
| 168 | gate_cnt_ = 0; |
| 169 | while (!igates_queue.empty()) { |
| 170 | bess::IGate *igate = igates_queue.top(); |
| 171 | igates_queue.pop(); |
| 172 | |
| 173 | igate->SetUniqueIdx(gate_cnt_++); |
| 174 | } |
| 175 | |
| 176 | while (!ogates_queue.empty()) { |
| 177 | bess::OGate *ogate = ogates_queue.top(); |
| 178 | ogates_queue.pop(); |
| 179 | |
| 180 | ogate->SetUniqueIdx(gate_cnt_++); |
| 181 | } |
| 182 | } |
| 183 | |
| 184 | void ModuleGraph::ConfigureTasks() { |
| 185 | for (int i = 0; i < Worker::kMaxWorkers; i++) { |
nothing calls this directly
no test coverage detected