(self)
| 1803 | _intercept = True |
| 1804 | |
| 1805 | async def _worker(self): |
| 1806 | async with self.scan._acatch(context=self._worker, unhandled_is_critical=True): |
| 1807 | try: |
| 1808 | while not self.scan.stopping and not self.errored: |
| 1809 | try: |
| 1810 | if self.incoming_event_queue is not False: |
| 1811 | incoming = await self.get_incoming_event() |
| 1812 | try: |
| 1813 | event, kwargs = incoming |
| 1814 | except ValueError: |
| 1815 | event = incoming |
| 1816 | kwargs = {} |
| 1817 | else: |
| 1818 | self.debug("Event queue is in bad state") |
| 1819 | break |
| 1820 | except asyncio.queues.QueueEmpty: |
| 1821 | await asyncio.sleep(0.1) |
| 1822 | continue |
| 1823 | |
| 1824 | if event.type == "FINISHED": |
| 1825 | context = f"{self.name}.finish()" |
| 1826 | async with self.scan._acatch(context), self._task_counter.count(context): |
| 1827 | await self.finish() |
| 1828 | continue |
| 1829 | |
| 1830 | acceptable = True |
| 1831 | async with self._task_counter.count(f"event_precheck({event})"): |
| 1832 | precheck_pass, reason = self._event_precheck(event) |
| 1833 | if not precheck_pass: |
| 1834 | self.debug(f"Not intercepting {event} because precheck failed ({reason})") |
| 1835 | acceptable = False |
| 1836 | async with self._task_counter.count(f"event_postcheck({event})"): |
| 1837 | postcheck_pass, reason = await self._event_postcheck(event) |
| 1838 | if not postcheck_pass: |
| 1839 | self.debug(f"Not intercepting {event} because postcheck failed ({reason})") |
| 1840 | acceptable = False |
| 1841 | |
| 1842 | # whether to pass the event on to the rest of the scan |
| 1843 | # defaults to true, unless handle_event returns False |
| 1844 | forward_event = True |
| 1845 | forward_event_reason = "" |
| 1846 | |
| 1847 | if acceptable: |
| 1848 | context = f"{self.name}.handle_event({event, kwargs})" |
| 1849 | self.scan.stats.event_consumed(event, self) |
| 1850 | self.debug(f"Intercepting {event}") |
| 1851 | try: |
| 1852 | forward_event = await self.run_task(self.handle_event(event, **kwargs), context) |
| 1853 | except asyncio.CancelledError: |
| 1854 | self.debug(f"{context} was cancelled") |
| 1855 | continue |
| 1856 | with suppress(ValueError, TypeError): |
| 1857 | forward_event, forward_event_reason = forward_event |
| 1858 | |
| 1859 | if forward_event is False: |
| 1860 | self.debug(f"Not forwarding {event} because {forward_event_reason}") |
| 1861 | continue |
| 1862 |
nothing calls this directly
no test coverage detected