o
    Á¿i—  ã                   @   s,   d dl mZ d dlmZ G dd„ deƒZdS )é    )ÚTraceProcessor)Ú	SPAN_KINDc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚPeerServiceProcessorc                 C   s   || _ | j j| _| j j| _d S ©N)Ú_configÚset_defaults_enabledÚ_set_defaults_enabledÚpeer_service_mappingÚ_mapping)ÚselfÚpeer_service_config© r   ú[/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/peer_service/processor.pyÚ__init__   s   
zPeerServiceProcessor.__init__c                    sR   |sd S g }ˆ j st‡ fdd„|ƒ}n	t‡ fdd„|ƒ}tt‡ fdd„|ƒƒ |S )Nc                    s   |   ˆ jj¡S r   )Úget_tagr   Útag_name©Úx©r   r   r   Ú<lambda>   s    z4PeerServiceProcessor.process_trace.<locals>.<lambda>c                    s    |   ˆ jj¡p|   t¡ˆ jjv S r   )r   r   r   r   Úenabled_span_kindsr   r   r   r   r      s     c                    s
   ˆ   | ¡S r   )Ú_update_peer_service_tagsr   r   r   r   r      s   
 )r   ÚfilterÚanyÚmap)r   ÚtraceÚtraces_to_processr   r   r   Úprocess_trace   s   
þz"PeerServiceProcessor.process_tracec                 C   s¢   |  | jj¡}|r| | jj| jj¡ n | jjD ]}|  |¡}|r3| | jj|¡ | | jj|¡  nq|| jv rO| | jj|¡ | | jj| jj| ¡ d S d S r   )	r   r   r   Ú_set_tag_strÚsource_tag_nameÚprioritized_data_sourcesr
   Úremap_tag_namer	   )r   ÚspanÚtagÚdata_sourcer   r   r   r      s   
ý
þz.PeerServiceProcessor._update_peer_service_tagsN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r      s    r   N)Úddtrace._trace.processorr   Úddtrace.constantsr   r   r   r   r   r   Ú<module>   s    