(self, init_net, exit_net)
| 367 | self.reader.setup_ex(init_net, finish_net) |
| 368 | |
| 369 | def read_ex(self, init_net, exit_net): |
| 370 | read_nets, status, rec = self.reader.read_record_ex(init_net, exit_net) |
| 371 | # We don't use status as stop_blob of NetBuilder it's not guarantee that |
| 372 | # it would end up being the true stob_blob. For example, |
| 373 | # ReaderWithLimitBase doesn't pass the status through but rather copy |
| 374 | # from it. |
| 375 | with NetBuilder() as nb: |
| 376 | # Current NetBuilder is optionally used inside the processor, |
| 377 | # then its children are retrieved inside of |
| 378 | # normalize_processor_output. |
| 379 | # Once readers and writers also use NetBuilder, |
| 380 | # this logic will be more natural. |
| 381 | result = normalize_processor_output(self.processor(rec)) |
| 382 | read_nets += result.nets |
| 383 | if result.should_stop or nb._stop_blob: |
| 384 | stop_net = core.Net('stop_net') |
| 385 | if result.should_stop: |
| 386 | stop_net.Or([status, result.should_stop], [status]) |
| 387 | if nb._stop_blob: |
| 388 | stop_net.Or([status, nb._stop_blob], [status]) |
| 389 | read_nets.append(stop_net) |
| 390 | if hasattr(self.processor, 'setup'): |
| 391 | init_net.add_attribute(TaskGroup.LOCAL_SETUP, self.processor) |
| 392 | self._set_schema(result.record) |
| 393 | fields = result.record.field_blobs() if result.record else None |
| 394 | return read_nets, status, fields |
| 395 | |
| 396 | |
| 397 | class NetProcessor: |
nothing calls this directly
no test coverage detected