#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
service.py – plugin.video.torproxy

Viene avviato da Kodi come servizio in background al caricamento dell'addon.
Si occupa di:
  - Attendere che Kodi stia per chiudersi (Monitor.abortRequested)
  - Fermare il processo Tor bundled in modo pulito (Linux / Android)

Su Windows il kill è già garantito dal Job Object (KILL_ON_JOB_CLOSE)
creato in tor_manager.py, quindi qui serve solo come sicurezza aggiuntiva.
"""

import xbmc
from tor_manager import get_launcher, _is_android, _is_windows


class _ShutdownMonitor(xbmc.Monitor):
    """Intercetta la richiesta di uscita di Kodi."""
    pass


def _log(msg: str) -> None:
    xbmc.log(f"[TorThegroove][service] {msg}", xbmc.LOGINFO)


if __name__ == '__main__':
    monitor = _ShutdownMonitor()
    _log("Servizio avviato – in attesa di shutdown Kodi…")

    # Aspetta finché Kodi non richiede l'uscita
    # waitForAbort(timeout) restituisce True quando Kodi sta per chiudersi
    while not monitor.waitForAbort(5):
        pass  # polling ogni 5 secondi, praticamente zero CPU

    # Kodi si sta chiudendo — ferma Tor
    _log("Shutdown Kodi rilevato – arresto Tor…")
    try:
        launcher = get_launcher()   # restituisce l'istanza globale (già avviata)
        if launcher.is_running():
            launcher.stop()
            _log("Tor arrestato con successo.")
        else:
            _log("Tor non era in esecuzione.")
    except Exception as exc:
        _log(f"Errore arresto Tor: {exc}")
