| 750 | |
| 751 | |
| 752 | class LiveTailLogEventsCollector(Thread): |
| 753 | def __init__( |
| 754 | self, |
| 755 | output, |
| 756 | ui, |
| 757 | response_stream, |
| 758 | log_events: list, |
| 759 | session_metadata: LiveTailSessionMetadata, |
| 760 | ) -> None: |
| 761 | super().__init__() |
| 762 | self._output = output |
| 763 | self._ui = ui |
| 764 | self._response_stream = response_stream |
| 765 | self._log_events = log_events |
| 766 | self._session_metadata = session_metadata |
| 767 | self._exception = None |
| 768 | |
| 769 | def _collect_log_events(self): |
| 770 | try: |
| 771 | for event in self._response_stream: |
| 772 | if "sessionUpdate" not in event: |
| 773 | continue |
| 774 | |
| 775 | session_update = event["sessionUpdate"] |
| 776 | self._session_metadata.update_metadata( |
| 777 | session_update["sessionMetadata"] |
| 778 | ) |
| 779 | logEvents = session_update["sessionResults"] |
| 780 | for logEvent in logEvents: |
| 781 | self._log_events.append(logEvent["message"]) |
| 782 | except Exception as e: |
| 783 | self._exception = e |
| 784 | |
| 785 | self._ui.exit() |
| 786 | |
| 787 | def stop(self): |
| 788 | if self._exception is not None: |
| 789 | self._output.write(str(self._exception) + "\n") |
| 790 | self._output.flush() |
| 791 | |
| 792 | def run(self): |
| 793 | self._collect_log_events() |