
    Sif                    N    d Z ddlmZ ddlZddlZ G d d      Z e       ZddZy)u  장시간 실행 작업을 위한 인터럽트 메커니즘.

시그널(SIGINT/SIGTERM) 또는 직접 set() 호출로 중단 플래그를 설정한다.
장시간 루프 안에서 INTERRUPT.is_set()을 폴링하여 중단을 감지한다.

Usage:
    from utils.interrupt import INTERRUPT, register_signal_handler

    register_signal_handler()  # SIGINT/SIGTERM 핸들러 등록

    while not INTERRUPT.is_set():
        do_work()
    )annotationsNc                  0    e Zd ZdZddZddZddZddZy)	InterruptFlagu   스레드 안전한 인터럽트 플래그.

    Methods:
        set()      — 인터럽트 플래그를 설정한다.
        is_set()   — 플래그 설정 여부를 반환한다.
        reset()    — 플래그를 초기화한다.
    c                6    t        j                         | _        y N)	threadingEvent_eventselfs    @/home/jay/workspace/.worktrees/task-2117-dev1/utils/interrupt.py__init__zInterruptFlag.__init__   s    oo'    c                8    | j                   j                          y r   )r
   setr   s    r   r   zInterruptFlag.set!   s    r   c                6    | j                   j                         S r   )r
   is_setr   s    r   r   zInterruptFlag.is_set$   s    {{!!##r   c                8    | j                   j                          y r   )r
   clearr   s    r   resetzInterruptFlag.reset'   s    r   NreturnNone)r   bool)__name__
__module____qualname____doc__r   r   r   r    r   r   r   r      s    ($r   r   c                     dd} t        j                   t         j                  |        t        j                   t         j                  |        y)ub   SIGINT/SIGTERM 수신 시 글로벌 INTERRUPT 플래그를 설정하는 핸들러를 등록한다.c                ,    t         j                          y r   )	INTERRUPTr   )signumframes     r   _handlerz)register_signal_handler.<locals>._handler1   s    r   N)r#   intr$   objectr   r   )signalSIGINTSIGTERM)r%   s    r   register_signal_handlerr+   .   s-     MM&--*
MM&..(+r   r   )r   
__future__r   r(   r   r   r"   r+   r   r   r   <module>r-      s-    #   , O	,r   