
    %j                        d dl mZ d dlmZ d dlZd dlmZ d dlZ G d d          Z ed           G d	 d
                      Z	 G d d          Z
dS )    )annotations)	dataclassN)Pathc                  &    e Zd ZddZdd	ZddZdS )NonceManagerpath
str | PathsignerstrreturnNonec                   t          |          | _        |                                | _        | j        j                            dd           d S NT)parentsexist_ok)r   r   lowerr
   parentmkdir)selfr   r
   s      Q/home/agent/projects/CryptoTradingBot/Crypto_Agent/src/execution/nonce_manager.py__init__zNonceManager.__init__
   sB    JJ	llnn	td;;;;;    dictc                    	 t          j        | j                            d                    S # t          $ r i cY S t           j        $ r i cY S w xY w)Nutf-8encoding)jsonloadsr   	read_textFileNotFoundErrorJSONDecodeError)r   s    r   _readzNonceManager._read   sl    	:di1171CCDDD  	 	 	III# 	 	 	III	s   ,/ AAAintc           	        | j                             | j         j        dz             }|                                rGt	          j                    |                                j        z
  dk    r|                    d           |                    t          t	          j                              d           	 | 
                                }t          |                    | j        t          t	          j                    dz                                }t          |dz   t          t	          j                    dz                      }||| j        <   | j                             | j         j        d	z             }|                    t          j        |d
          d           |                    | j                    ||                    d           S # |                    d           w xY w)N.lock   T)
missing_okr   r   i     z.tmp)	sort_keys)r   with_suffixsuffixexiststimestatst_mtimeunlink
write_textr   r#   r$   getr
   maxr   dumpsreplace)r   lockdatacurrent	candidatetmps         r   
next_noncezNonceManager.next_nonce   s   y$$TY%5%?@@;;== 	-y{{TYY[[11B66t,,,DIKK((7;;;
	)::<<D$((4;DIKK$4F0G0GHHIIGGaKTY[[4-?)@)@AAI )D)''	(86(ABBCNN4:dd;;;gNNNNKK	"""KK4K((((DKK4K((((s   9DG G0N)r   r	   r
   r   r   r   )r   r   )r   r$   )__name__
__module____qualname__r   r#   r<    r   r   r   r   	   sP        < < < <
   ) ) ) ) ) )r   r   T)frozenc                  .    e Zd ZU ded<   ded<   ded<   dS )SignerLockResultboolacquiredr   reasonr   r   N)r=   r>   r?   __annotations__r@   r   r   rC   rC   +   s+         NNNKKKJJJJJr   rC   c                      e Zd ZddZdd
ZdS )SignerLockRegistrylock_dirr	   r   r   c                f    t          |          | _        | j                            dd           d S r   )r   rJ   r   )r   rJ   s     r   r   zSignerLockRegistry.__init__3   s0    XD488888r   r
   r   
process_idrC   c               d   |                                                     dd          }| j        | dz  }|                                r@|                    dd                                          }||k    rt          dd|          S |                    |d	           t          d
d|          S )N/_r&   r   r6   )r   errorsFsigner_collisionr   TrE   )r   r6   rJ   r-   r    striprC   r2   )r   r
   rL   safer   existings         r   try_acquirezSignerLockRegistry.try_acquire7   s    ||~~%%c3//}$~~~-;;== 	I~~wy~IIOOQQH:%%'/A4HHH
W555j$777r   N)rJ   r	   r   r   )r
   r   rL   r   r   rC   )r=   r>   r?   r   rU   r@   r   r   rI   rI   2   s<        9 9 9 98 8 8 8 8 8r   rI   )
__future__r   dataclassesr   r   pathlibr   r.   r   rC   rI   r@   r   r   <module>rY      s    " " " " " " ! ! ! ! ! !        ) ) ) ) ) ) ) )D $       8 8 8 8 8 8 8 8 8 8r   