o
    @Bi                  
   @   sH  d dl Z z
d dlmZ dZW n ey+ Z ze jde dZW Y dZ[ndZ[ww erd 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 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  dS dS )    N)xbrTz,WARNING: could not import autobahn.xbr - {}
F)deferToThread)LoopingCall)ensureDeferred)hl)	IProviderISeller	IConsumerIBuyer)_seller_buyer_blockchainc                   @   s   e Zd Ze ZeZdS )SimpleBlockchainN)__name__
__module____qualname__txaiomake_loggerlogr   backgroundCaller r   r   T/var/www/html/Trade-python/venv/lib/python3.10/site-packages/autobahn/twisted/xbr.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_idpriceinterval	on_rotate	__class__r   r   r   9   s   
zKeySeries.__init__c                    sd    j du sJ  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   _rotater   r   r   r   <lambda>J   s    z!KeySeries.start.<locals>.<lambda>)r   r   infor   	_intervaluuidUUID_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   r2   O   s
   
zKeySeries.stopr&   )
r   r   r   r   r   r   r   r/   r2   __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   r4   [   s    r4   c                   @   s   e Zd Ze ZdS )SimpleBuyerN)r   r   r   r   r   r   r   r   r   r   r6   c   s    r6   )"sysautobahnr   HAS_XBRImportErrorestderrwriter1   r   use_twistedtwisted.internet.threadsr   twisted.internet.taskr   twisted.internet.deferr   r,   autobahn.xbr._utilr   autobahn.xbr._interfacesr   r   r	   r
   autobahn.xbrr   r   r   r   r   r4   r6   registerr   r   r   r   <module>   s8   %


