U
    @f                     @   s   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
mZmZ daejjZdd ZG dd	 d	Zd
d Zdd Zdd Zdd ZdS )    N)wsgi)api)SERVER_RECVSERVER_SEND)HDR_TRACE_IDHDR_SPAN_IDHDR_PARENT_SPAN_IDHDR_SAMPLEDc           	      C   s   t   t| jt}t| jt}t| jt}t| jt	}|d krht 
  }}d }t }| j d d \}}t j||}t j| j|||||d}t | t t t d| j t|  t  rt t d S )N   )nametrace_idspan_id	parent_idsampledZendpointzhttp.uri)r   Zinit_trace_dataint_or_noneheaders	getheaderr   r   r   bool_or_noner	   Zgenerate_trace_id_samplersamplingrequestgetsocknameZZipkinDataBuilderZbuild_endpointZ	TraceDatacommandZset_trace_dataZput_annotationr   Zput_key_valuepath __original_handle_one_response__Z	is_sampler   )	selfr   r   r   r   ipportepZ
trace_data r   N/var/www/html/chatgpt/venv/lib/python3.8/site-packages/eventlet/zipkin/wsgi.py_patched_handle_one_response   s0    

r!   c                   @   s   e Zd Zdd Zdd ZdS )Samplerc                 C   s
   || _ d S Nsampling_rate)r   r%   r   r   r    __init__,   s    zSampler.__init__c                 C   s(   | j dkrdS t }|| j k r$dS dS )Ng      ?TF)r%   random)r   rr   r   r    r   /   s    

zSampler.samplingN)__name__
__module____qualname__r&   r   r   r   r   r    r"   +   s   r"   c                 C   s   | d krd S t | dS )N   )intvalr   r   r    r   9   s    r   c                 C   s   | dkrdS | dkrdS d S )N1T0Fr   r.   r   r   r    r   ?   s
    r   c                 C   s   t | attj_d S r#   )r"   r   r!   r   HttpProtocolhandle_one_responser$   r   r   r    patchG   s    r4   c                   C   s   t tj_d S r#   )r   r   r2   r3   r   r   r   r    unpatchM   s    r5   )r'   Zeventletr   Zeventlet.zipkinr   Z,eventlet.zipkin._thrift.zipkinCore.constantsr   r   Zeventlet.zipkin.httpr   r   r   r	   r   r2   r3   r   r!   r"   r   r   r4   r5   r   r   r   r    <module>   s   