U
    •uÄcT  ã                
   @   s\  d dl Z zd dlmZ dZW n8 ek
rT Z ze j d e¡¡ dZW 5 dZ[X Y nX e�rXd dl	Z	e	 
¡  d dlmZ d dlmZ d dlmZ d dlZd d	lmZ d d
lmZmZmZmZmZ d dlmZmZmZ G dd„ dejƒZG dd„ dejƒZG dd„ dej ƒZ G dd„ dej!ƒZ!e "e ¡ e "e ¡ e "e ¡ e "e!¡ e "e!¡ e "e!¡ dS )é    N)ÚxbrTz,WARNING: could not import autobahn.xbr - {}
F)ÚdeferToThread)ÚLoopingCall)ÚensureDeferred)Úhl)Ú	IProviderÚISellerÚ	IConsumerÚIBuyerÚ	IDelegate)Ú_sellerÚ_buyerÚ_blockchainc                   @   s   e Zd Ze ¡ ZeZdS )ÚSimpleBlockchainN)Ú__name__Ú
__module__Ú__qualname__ÚtxaioÚmake_loggerÚlogr   ZbackgroundCaller© r   r   úhc:\users\psant\downloads\hotstarbackend\school\venv38\Lib\site-packages\autobahn\twisted\xbr\__init__.pyr   2   s   r   c                       s6   e Zd Ze ¡ Zd‡ fdd„	Zdd„ Zdd„ Z‡  Z	S )	Ú	KeySeriesNc                    s*   t ƒ  |||||¡ d| _d | _d | _d S )NF)ÚsuperÚ__init__ÚrunningÚ	_run_loopÚ_started)ÚselfÚapi_idZpriceÚintervalÚcountZ	on_rotate©Ú	__class__r   r   r   9   s    zKeySeries.__init__c                 ƒ   sb   ˆ j dkst‚ˆ jjdtˆ jƒttjˆ jd�ƒd� dˆ _	t
‡ fdd„ƒˆ _ ˆ j  ˆ j¡ˆ _ˆ jS )z\
            Start offering and selling data encryption keys in the background.
            NzGStarting key rotation every {interval} seconds for api_id="{api_id}" ..)Úbytes)r    r   Tc                      s   t ˆ  ¡ ƒS )N)r   Z_rotater   ©r   r   r   Ú<lambda>J   ó    z!KeySeries.start.<locals>.<lambda>)r   ÚAssertionErrorr   Úinfor   Z	_intervalÚuuidÚUUIDZ_api_idr   r   Ústartr   r%   r   r%   r   r,   ?   s     ÿzKeySeries.startc                 C   s.   | j std | jj¡ƒ‚| j  ¡  d| _ | jS )zE
            Stop offering/selling data encryption keys.
            z&cannot stop {} - not currently runningN)r   ÚRuntimeErrorÚformatr#   r   Ústopr   r%   r   r   r   r/   O   s
    
zKeySeries.stop)NNN)
r   r   r   r   r   r   r   r,   r/   Ú__classcell__r   r   r"   r   r   6   s   r   c                   @   s   e Zd ZdZe ¡ ZeZ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   r1   [   s   r1   c                   @   s   e Zd Ze ¡ ZdS )ÚSimpleBuyerN)r   r   r   r   r   r   r   r   r   r   r3   c   s   r3   )#ÚsysÚautobahnr   ZHAS_XBRÚImportErrorÚeÚstderrÚwriter.   r   Zuse_twistedZtwisted.internet.threadsr   Ztwisted.internet.taskr   Ztwisted.internet.deferr   r*   Zautobahn.utilr   Zautobahn.xbr._interfacesr   r   r	   r
   r   Zautobahn.xbrr   r   r   r   r   r1   r3   Úregisterr   r   r   r   Ú<module>   s4   %




