
    	^c+                         d dl Z d dlmZmZ d dlmZmZ ddlmZ  G d de	          Z
 G d d	e
          Z G d
 d          ZdS )    N)encodingutil)procutil
stringutil   )
pywatchmanc                   <    e Zd ZddZd Z ej        e          ZdS )UnavailableTFc                 T    || _         || _        | j         dk    rd| _        || _        d S )Ns   timed out waiting for responseF)msgwarn
invalidate)selfr   r   r   s       @/usr/lib/python3/dist-packages/hgext/fsmonitor/watchmanclient.py__init__zUnavailable.__init__   s0    	8888DI$    c                 8    | j         r
d| j        z  S d| j        z  S )Ns!   warning: Watchman unavailable: %ss   Watchman unavailable: %s)r   r   r   s    r   	__bytes__zUnavailable.__bytes__   s&    9 	:7$(BB.99r   N)TF)__name__
__module____qualname__r   r   r   	strmethod__str__ r   r   r
   r
      sE        % % % %: : : !h ++GGGr   r
   c                        e Zd Z fdZ xZS )WatchmanNoRootc                 f    || _         t          t          |                               |           d S N)rootsuperr   r   )r   r    r   	__class__s      r   r   zWatchmanNoRoot.__init__)   s.    	nd##,,S11111r   )r   r   r   r   __classcell__)r"   s   @r   r   r   (   s8        2 2 2 2 2 2 2 2 2r   r   c                   Z    e Zd ZddZd Zd Zd Zd Zej	        d             Z
d Zd	 Zd
S )client      ?c                     d }| j         sd}d}| j         |                    dd          v rd| j         z  }d}|rt          ||          || _        d | _        || _        || _        d| _        d S )Ns   couldn't get userT	   fsmonitors   blacklistuserss   user %s in blacklistF)_user
configlistr
   _timeout_watchmanclient_root_ui
_firsttime)r   uir    timeouterrr   s         r   r   zclient.__init__/   s    z 	&CD:|5FGGGG)DJ6CD 	)c4(((#
r   c                 Z    || _         | j        | j                            |           d S d S r   )r+   r,   
setTimeout)r   r1   s     r   
settimeoutzclient.settimeoutA   s7    + ++G44444 ,+r   c                     |                      d          }t          j        |d          st          dd          |j        S )Ns   clockclocks#   clock result is missing clock valueT)r   )commandr   safehasattrr
   r7   )r   results     r   getcurrentclockzclient.getcurrentclockF   sN    h''00 	64    |r   c                     d | _         d S r   )r,   r   s    r   clearconnectionzclient.clearconnectionN   s    #r   c                 "    | j         d up| j        S r   )r,   r/   r   s    r   	availablezclient.availableQ   s    #4/B4?Br   c                 L    	 t          j                    S # t          $ r Y d S w xY wr   )getpassgetuserKeyErrorr   s    r   r)   zclient._userT   s7    	?$$$ 	 	 	44	s    
##c                 X   |d         | j         f|dd          z   }	 | j        Ud| _        | j                            dd          }t          j        | j        dt          j	        |                    | _         | j        j
        | S # t
          j        $ r`}d|j        v r,t          | j         t          j        |j                            t!          t          j        |j                            d }~wt
          j        $ r&}t!          t          j        |                    d }~ww xY w)	Nr   r   Fr(   s   watchman_exeT)r1   useImmutableBserbinpathzunable to resolve root)r-   r,   r/   r.   
configpathr   r%   r+   r   tonativestrqueryCommandErrorr   r   r   forcebytestrr
   WatchmanError)r   argswatchmanargswatchman_exeexs        r   _commandzclient._command\   s;   Q,tABBx7	;#+"'#x22 /    (2'8 M%)$0>>( ( ($
 .4'-|<<& 	? 	? 	?'2611$J
 7 ? ?   j5bf==>>>' 	; 	; 	;j5b99:::	;s%   A*B D)AC11D)!D$$D)c                     	 	  | j         | S # t          $ r" |                      d            | j         | cY S w xY w# t          $ r	 d | _         w xY w)Ns   watch)rQ   r   r
   r,   )r   rM   s     r   r8   zclient.commands   s    	,$t}d++! , , , h'''$t}d++++	,
  	 	 	 $(D 		s   	 )9< 9< AN)r&   )r   r   r   r   r5   r;   r=   r?   r   propertycacher)   rQ   r8   r   r   r   r%   r%   .   s           $5 5 5
  $ $ $C C C 
  ; ; ;.    r   r%   )rA   	mercurialr   r   mercurial.utilsr   r    r   	Exceptionr
   r   r%   r   r   r   <module>rX      s                 
      , , , , ,) , , ,"2 2 2 2 2[ 2 2 2R R R R R R R R R Rr   