o
    i                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 er.d dl
mZ eeZG dd	 d	e jd
ZG dd deZdS )    N)TYPE_CHECKING)
get_logger)ConfigMetadata)Payload)PayloadType)PublisherSubscriberConnectorc                   @   s:   e Zd ZdddZdddZd	ed
ededdfddZdS )RemoteConfigPublisherBasedata_connectorr   returnNc                 C   s
   || _ d S N)_data_connectorselfr	    r   ]/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/remoteconfig/_publishers.py__init__   s   
z"RemoteConfigPublisherBase.__init__c                 C      t r   NotImplementedErrorr   r   r   r   dispatch      z"RemoteConfigPublisherBase.dispatchconfig_contenttargetconfig_metadatac                 C   r   r   r   r   r   r   r   r   r   r   append   r   z RemoteConfigPublisherBase.appendr	   r   r
   Nr
   N)	__name__
__module____qualname__r   r   r   strr   r   r   r   r   r   r      s    

r   )	metaclassc                       sF   e Zd ZdZd fddZded	ed
eddfddZdddZ	  Z
S )RemoteConfigPublisherzStandard Remote Config Publisher: each time Remote Config Client receives new payloads, RemoteConfigPublisher
    shared them to all process. Dynamic Instrumentation uses this class
    r	   r   r
   Nc                    s   t t| | g | _d S r   )superr$   r   _config_and_metadatar   	__class__r   r   r   !   s   
zRemoteConfigPublisher.__init__r   r   r   c                 C   s   | j t||| d S r   )r&   r   r   r   r   r   r   r   %   s   zRemoteConfigPublisher.appendc                 C   s2   t dt t | j | j| j g | _d S )Nz&[%s][P: %s] Publisher publish data: %s)logdebugosgetpidgetppidr&   r   writer   r   r   r   r   (   s   
zRemoteConfigPublisher.dispatchr   r   )r   r    r!   __doc__r   r   r"   r   r   r   __classcell__r   r   r'   r   r$      s
    r$   )abcr+   typingr   ddtrace.internal.loggerr   ddtrace.internal.remoteconfigr   r   r   )ddtrace.internal.remoteconfig._connectorsr   r   r)   ABCMetar   r$   r   r   r   r   <module>   s    