
    af]                        	 d dl mZ dZn	#  dZY nxY w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           dS dS )    )xbrTFN)hl)	IProviderISeller	IConsumerIBuyerc                  F     t          j                    j        d g| R i |S N)asyncioget_running_looprun_in_executor)argskwargss     O/var/www/html/env/lib/python3.11/site-packages/autobahn/asyncio/xbr/__init__.pyr   r   )   s.    9w'))9$PPPPPPP    c                       e Zd ZeZdS )SimpleBlockchainN)__name__
__module____qualname__r   backgroundCaller r   r   r   r   ,   s        *r   r   c                   J     e Zd Z ej                    Zd fd	Zd Zd Z xZ	S )	KeySeriesNc                 ^    t                                          ||||           d| _        d S )NF)super__init__running)selfapi_idpriceinterval	on_rotate	__class__s        r   r   zKeySeries.__init__2   s,    GGVUHi@@@ DLLLr   c           	         K    j         rJ  j                            dt           j                  t          t          j         j                                       d _          fd}t          j	         |                       dS )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         rB                                  d {V  t          j         j                   d {V   j         @d S d S r
   )r   _rotater   sleep	_intervalr   s   r   rotate_with_intervalz-KeySeries.start.<locals>.rotate_with_interval@   su      l 8,,..(((((((!-777777777 l 8 8 8 8 8r   N)
r   loginfor   r*   uuidUUID_api_idr   create_task)r   r,   s   ` r   startzKeySeries.start6   s       |###HMMc#%dn#5#5bQUQ]A^A^A^>_>_  a a aDL8 8 8 8 8
  4 4 6 677777r   c                 z    | j         s,t          d                    | j        j                            d| _         dS )zE
            Stop offering/selling data encryption keys.
            z&cannot stop {} - not currently runningFN)r   RuntimeErrorformatr$   r   r+   s    r   stopzKeySeries.stopG   s>     < m"#K#R#RSWSaSj#k#klll DLLLr   r
   )
r   r   r   txaiomake_loggerr-   r   r3   r7   __classcell__)r$   s   @r   r   r   /   sk        e!!	! 	! 	! 	! 	! 	!	8 	8 	8"	! 	! 	! 	! 	! 	! 	!r   r   c                   *    e Zd ZdZeej        _        dS )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dS )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GGGGG  ;$KKKNNNLLL      NNNNNNNNNNNNQ Q Q+ + + + +3/ + + +! ! ! ! !CM ! ! !B/ / / / /s' / / /    co    G\"""I|$$$FOK   I{#####w;$ ;$s    