
    bAj                         d Z ddlZddlZddlmZ ddlmZ dZdZdZ	de
d	e
d
ede
fdZde
d	e
d
edefdZde
d	e
d
eddfdZdede
ddfdZdde
dedefdZde
ddfdZy)z+Signal deduplication and distributed locks.    N)Optional)	get_rediszsignal:dedup:z
dlq:ordersi  symbolstrategycandle_close_tsreturnc                 x    |  d| d| }t        j                  |j                               j                         S )N|)hashlibsha256encode	hexdigest)r   r   r   raws       >C:\xampp\htdocs\tradingbinance\backend\app\core\idempotency.pysignal_hashr      s7    HAhZq 1
2C>>#**,'1133    c                    K   t                d {   }t         t        | ||       }|j                  |       d {   dkD  S 7 57 	w)Nr   )r   SIGNAL_DEDUP_PREFIXr   existsr   r   r   rkeys        r   is_signal_processedr      sH     kA !+fh"P!Q
RC#"" 	s   A
A-A
AA
A
c                    K   t                d {   }t         t        | ||       }|j                  |dt               d {    y 7 :7 w)N1)ex)r   r   r   setSIGNAL_DEDUP_TTLr   s        r   mark_signal_processedr      sK     kA !+fh"P!Q
RC
%%S-%
... 	.s!   AA4AAAAmessageerrorc                    K   t                d {   }| |d}|j                  t        t        j                  |             d {    |j                  t        dd       d {    y 7 Z7 &7 	w)N)r    r!   r   i  )r   lpushDLQ_KEYjsondumpsltrim)r    r!   r   payloads       r   push_to_dlqr)      sZ     kA!E2G
'''4::g.
///
'''1c
""" 	/"s3   A1A+5A1A-A1%A/&A1-A1/A1ttlc                 v   K   t                d {   }|j                  d|  dd|       d {   S 7 $7 w)Nlock:symbol:r   T)nxr   )r   r   )r   r*   r   s      r   acquire_symbol_lockr.   &   s:     kAfX.EEE 	Es   959799c                 p   K   t                d {   }|j                  d|         d {    y 7 !7 w)Nr,   )r   delete)r   r   s     r   release_symbol_lockr1   +   s2     kA
((\&*
+++ 	+s   626466)<   )__doc__r   r%   typingr   app.core.redis_clientr   r   r$   r   strintr   boolr   r   dictr)   r.   r1    r   r   <module>r;      s    1    +% 
 4 4s 4S 4S 4
#c #S #3 #SW #/ /s /S /UY /#t #C #D #Fc F FT F
,c ,d ,r   