
    i                     j    S r SSKrSSKrSSKrSSKrSr " S S\5      r " S S\S9r " S	 S
\5      r	g)u"   
本模块负责管理aria2进程
    Ngbkc                   J   ^  \ rS rSr\R
                  " 5       rU 4S jrSrU =r	$ )SingletonType(   c                    > [        U S5      (       d6  U R                     [        TU ]  " U0 UD6U l        S S S 5        U R                  $ U R                  $ ! , (       d  f       U R                  $ = f)N	_instance)hasattr_instance_locksuper__call__r   )clsargskwargs	__class__s      </app/mltbenv/lib/python3.13/site-packages/aioaria2/server.pyr   SingletonType.__call__+   sZ    sK((## % 0$ A& A $}}s}} $#}}s   A
A. )
__name__
__module____qualname____firstlineno__	threadingLockr
   r   __static_attributes____classcell__r   s   @r   r   r   (   s    ^^%N     r   c                       \ rS rSrSrSS.S\4S jjrSS	 jrS\4S
 jr	S\4S jr
S\4S jr\S\4S j5       r\S\4S j5       rSS jrSS jrSrg)Aria2Server2   u   
aria2进程对象
Fdaemonr   c                    U(       a  [        U5      O/ U l        U(       a=  U R                  R                  SR                  [        R
                  " 5       5      5        SU l        SU l        g)ud   
:param args: 启动aria2的命令行参数
:param daemon: True:aria2随python解释器同生共死
z--stop-with-process={:d}NF)listcmdappendformatosgetpidprocess_is_running)selfr"   r   s      r   __init__Aria2Server.__init__7   sG    
 "&4:2HHOO6==biikJK)- r   returnNc                 \    [         R                  " U R                  5      U l        SU l        g NT)
subprocessPopenr%   r*   r+   r,   s    r   startAria2Server.startB   s     !''1r   c                 H    U R                   R                  5       nSU l        U$ )u&   
等待进程结束
:return: ret code
Fr*   waitr+   r,   codes     r   r9   Aria2Server.waitF   s#    
 ||  " r   c                 V    U R                   R                  5         U R                  5       $ )u    
结束进程
:return: ret code
r*   	terminater9   r4   s    r   r?   Aria2Server.terminateO   s     
 	 yy{r   c                 V    U R                   R                  5         U R                  5       $ Nr*   killr9   r4   s    r   rD   Aria2Server.killW   s    yy{r   c                 .    U R                   R                  $ rB   )r*   pidr4   s    r   rG   Aria2Server.pid[   s    ||r   c                 .    U R                   R                  $ rB   )r*   
returncoder4   s    r   rJ   Aria2Server.returncode_   s    ||&&&r   c                 &    U R                  5         U $ rB   r5   r4   s    r   	__enter__Aria2Server.__enter__c   s    

r   c                 H    U R                   (       a  U R                  5         g g rB   r+   r?   r,   exc_typeexc_valexc_tbs       r   __exit__Aria2Server.__exit__g   s    NN r   )r+   r%   r*   r/   N)r/   r   )r   r   r   r   __doc__strr-   r5   intr9   r?   rD   propertyrG   rJ   rN   rV   r   r   r   r   r   r   2   s     +0 	!c 	! c 3 c   S     'C ' 'r   r   )	metaclassc                      ^  \ rS rSrSrSS.S\4U 4S jjjrSS jrS\4S	 jr	S\4S
 jr
S\4S jrSS jrSS jrSrU =r$ )AsyncAria2Serverl   u   
aria2进程对象
异步io
Fr!   r   c                &   > [         TU ]  " USU06  g )Nr"   )r   r-   )r,   r"   r   r   s      r   r-   AsyncAria2Server.__init__r   s    $.v.r   r/   c                    #    U R                   tp[        R                  " U/UQ76 I S h  vN U l        SU l        g  N7fr1   )r%   asynciocreate_subprocess_execr*   r+   )r,   programr   s      r   r5   AsyncAria2Server.startu   s8     $;;GKdKK Ls   (><>c                 d   #    U R                   R                  5       I S h  vN nSU l        U$  N7f)NFr8   r:   s     r   r9   AsyncAria2Server.waitz   s,     \\&&((  )s   0.0c                 r   #    U R                   R                  5         U R                  5       I S h  vN $  N7frB   r>   r4   s    r   r?   AsyncAria2Server.terminate   s'      YY[      .757c                 r   #    U R                   R                  5         U R                  5       I S h  vN $  N7frB   rC   r4   s    r   rD   AsyncAria2Server.kill   s'     YY[   rl   c                 B   #    U R                  5       I S h  vN   U $  N7frB   rM   r4   s    r   
__aenter__AsyncAria2Server.__aenter__   s     jjl 	s   c                 d   #    U R                   (       a  U R                  5       I S h  vN   g g  N7frB   rQ   rR   s       r   	__aexit__AsyncAria2Server.__aexit__   s&     ..""" "s   %0.0)r+   r*   rX   )r/   r_   )r   r   r   r   rY   rZ   r-   r5   r[   r9   r?   rD   rp   rs   r   r   r   s   @r   r_   r_   l   sV    
 +0 /c / / 
C 
! !!C !# #r   r_   )
rY   rd   r(   r2   r   ENCODINGtyper   r   r_   r   r   r   <module>rw      sJ     	   6D 7M 7t!#{ !#H r   