U
    9¡_V  ã                   @   s.   d dl Z d dlmZ d dlT G dd„ dƒZdS )é    N)ÚGLib)Ú*c                   @   s>   e Zd Zddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ ZdS )Ú	KillTimeré   Nc                 C   s(   || _ || _d| _|  ¡  t ¡ | _d S ©Nr   )Ú_timeoutÚ	_killfuncÚ_holdsÚ_add_timeoutÚ	threadingZLockÚ_lock)ÚselfZtimeoutZkillfunc© r   ú-/usr/share/system-config-printer/killtimer.pyÚ__init__   s
    zKillTimer.__init__c                 C   s   t  | j| j¡| _d S )N)r   Ztimeout_add_secondsr   Ú_killÚ_timer©r   r   r   r   r
   %   s    zKillTimer._add_timeoutc                 C   s,   t d| j ƒ | jr|  ¡  n
t d¡ d S )NzTimeout (%ds), exitingr   )Ú
debugprintr   r   ÚsysÚexitr   r   r   r   r   (   s    
zKillTimer._killc                 C   sD   | j  ¡  | jdkr(tdƒ t | j¡ |  jd7  _| j  ¡  d S )Nr   zKill timer stoppedé   )r   Úacquirer	   r   r   Úsource_remover   Úreleaser   r   r   r   Úadd_hold/   s    

zKillTimer.add_holdc                 C   sJ   | j  ¡  | jdkr<|  jd8  _| jdkr<tdƒ |  ¡  | j  ¡  d S )Nr   r   zKill timer started)r   r   r	   r   r
   r   r   r   r   r   Úremove_hold8   s    


zKillTimer.remove_holdc                 C   s6   | j  ¡  | jdkr(t | j¡ |  ¡  | j  ¡  d S r   )r   r   r	   r   r   r   r
   r   r   r   r   r   ÚaliveA   s
    

zKillTimer.alive)r   N)	Ú__name__Ú
__module__Ú__qualname__r   r
   r   r   r   r   r   r   r   r   r      s   
		r   )r   Zgi.repositoryr   Údebugr   r   r   r   r   Ú<module>   s   