o
    j	                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ eeG dd deZ	d dl
mZ ejejejejdZd	d
 Zeee_dS )    )Deferred)IPullProducer)UNKNOWN_LENGTH)implementerc                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 ZdS )
ProducerNc                 C   s\   zt | tdd |D | _t|| _W n ty$   t| _|| _Y nw t | _|| _	dS )z#:param body: an iterable of stringsc                 S   s   g | ]}t |qS  )len).0fragmentr   r   Z/var/www/html/LicenciasMiG/venv/lib/python3.10/site-packages/spyne/server/twisted/_base.py
<listcomp>%   s    z%Producer.__init__.<locals>.<listcomp>N)
r   sumlengthiterbody	TypeErrorr   r   deferredconsumer)selfr   r   r   r   r   __init__   s   

zProducer.__init__c              
   C   sn   zt | j}W n' ty. } z| j  | jd ur#| j| j d | _W Y d }~d S d }~ww | j| d S N)nextr   StopIterationr   unregisterProducerr   callbackwrite)r   chunker   r   r   resumeProducing0   s   

zProducer.resumeProducingc                 C   s   d S r   r   r   r   r   r   pauseProducing=   s   zProducer.pauseProducingc                 C   s$   | j d ur| j td d | _ d S )Nz#Consumer asked us to stop producing)r   errback	Exceptionr   r   r   r   stopProducing@   s
   

zProducer.stopProducing)__name__
__module____qualname__r   r   r   r    r#   r   r   r   r   r      s    r   )Address)TCPTCP6UDPUDP6c                 C   s   t t| jd | j| jdS )N)typehostport)r'   	_TYPE_MAPgetr,   r-   r.   )peerr   r   r   _address_from_twisted_addressK   s   r2   N)twisted.internet.deferr   twisted.internet.interfacesr   twisted.web.iwebr   zope.interfacer   objectr   spyner'   TCP4r)   UDP4r+   r/   r2   staticmethodfrom_twisted_addressr   r   r   r   <module>   s   +