MCPcopy Create free account
hub / github.com/NetSys/bess / SetUniqueGateIdx

Method SetUniqueGateIdx

core/module_graph.cc:143–182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

141}
142
143void 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
184void ModuleGraph::ConfigureTasks() {
185 for (int i = 0; i < Worker::kMaxWorkers; i++) {

Callers

nothing calls this directly

Calls 4

sizeMethod · 0.80
igateMethod · 0.80
emptyMethod · 0.80
SetUniqueIdxMethod · 0.80

Tested by

no test coverage detected