
    h]                        	 d dl mZ dZerd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZ d Z G d d	ej                        Z G d
 dej                        Z G d dej                         Z G d dej"                        Z e
j$                  e        e	j$                  e        ej$                  e        ej$                  e       yy#  dZY xY w)    )xbrTFN)hl)	IProviderISeller	IConsumerIBuyerc                  R     t        j                         j                  d g| i |S N)asyncioget_running_looprun_in_executor)argskwargss     Y/var/www/Befach/backend/env/lib/python3.12/site-packages/autobahn/asyncio/xbr/__init__.pyr   r   )   s(    9w'')99$PPPP    c                       e Zd ZeZy)SimpleBlockchainN)__name__
__module____qualname__r   backgroundCaller r   r   r   r   ,   s    *r   r   c                   N     e Zd Z ej                         Zd fd	Zd Zd Z xZ	S )	KeySeriesc                 8    t         |   ||||       d| _        y )NF)super__init__running)selfapi_idpriceinterval	on_rotate	__class__s        r   r   zKeySeries.__init__2   s    GVUHi@ DLr   c           	      &   K    j                   rJ  j                  j                  dt         j                        t        t        j                   j                                     d _          fd}t        j                   |              yw)z\
            Start offering and selling data encryption keys in the background.
            zGStarting key rotation every {interval} seconds for api_id="{api_id}" ..)bytes)r"   r    Tc                     K    j                   rM j                          d {    t        j                   j                         d {     j                   rLy y 7 :7 wr
   )r   _rotater   sleep	_intervalr   s   r   rotate_with_intervalz-KeySeries.start.<locals>.rotate_with_interval@   sC     ll,,.((!--777 ll(7s'    A"A&A"
A A"A" A"N)
r   loginfor   r*   uuidUUID_api_idr   create_task)r   r,   s   ` r   startzKeySeries.start6   sr      ||##HHMMc#%dnn#5bQUQ]Q]A^>_  aDL8
  4 67s   BBc                     | j                   s.t        dj                  | j                  j                              d| _         y)zE
            Stop offering/selling data encryption keys.
            z&cannot stop {} - not currently runningFN)r   RuntimeErrorformatr$   r   r+   s    r   stopzKeySeries.stopG   s6     <<"#K#R#RSWSaSaSjSj#kll DLr   r
   )
r   r   r   txaiomake_loggerr-   r   r3   r7   __classcell__)r$   s   @r   r   r   /   s"    e!	!	8"	!r   r   c                   2    e Zd ZdZeej                  _        y)SimpleSellerz
        Simple XBR seller component. This component can be used by a XBR seller delegate to
        handle the automated selling of data encryption keys to the XBR market maker.
        N)r   r   r   __doc__r   r   r<   r   r   r   r<   r<   P   s    	 &/"r   r<   c                       e Zd Zy)SimpleBuyerN)r   r   r   r   r   r   r?   r?   W   s    r   r?   )autobahnr   HAS_XBRr/   r   r8   autobahn.utilr   autobahn.xbr._interfacesr   r   r   r   r   r   r   r<   r?   registerr   r   r   <module>rE      s   6G
  NNQ+3// +!CMM !B/s'' /coo  G\"I|$FOOK I{#w 	Gs   C C