o
    ¯bù  ã                   @   sZ   d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
 dZee	ƒG dd	„ d	ƒƒZd
S )z'
Log observer that maintains a buffer.
é    )Údeque)ÚDequeÚOptional)Úimplementeré   )ÚILogObserverÚLogEventi   c                   @   sN   e Zd ZdZefdee ddfdd„Zdeddfdd	„Z	d
e
ddfdd„ZdS )ÚLimitedHistoryLogObserveraÁ  
    L{ILogObserver} that stores events in a buffer of a fixed size::

        >>> from twisted.logger import LimitedHistoryLogObserver
        >>> history = LimitedHistoryLogObserver(5)
        >>> for n in range(10): history({'n': n})
        ...
        >>> repeats = []
        >>> history.replayTo(repeats.append)
        >>> len(repeats)
        5
        >>> repeats
        [{'n': 5}, {'n': 6}, {'n': 7}, {'n': 8}, {'n': 9}]
        >>>
    ÚsizeÚreturnNc                 C   s   t |d�| _dS )zx
        @param size: The maximum number of events to buffer.  If L{None}, the
            buffer is unbounded.
        )ÚmaxlenN)r   Ú_buffer)Úselfr
   © r   ú8/usr/lib/python3/dist-packages/twisted/logger/_buffer.pyÚ__init__%   s   z"LimitedHistoryLogObserver.__init__Úeventc                 C   s   | j  |¡ d S )N)r   Úappend)r   r   r   r   r   Ú__call__,   s   z"LimitedHistoryLogObserver.__call__ÚotherObserverc                 C   s   | j D ]}||ƒ qdS )z†
        Re-play the buffered events to another log observer.

        @param otherObserver: An observer to replay events to.
        N)r   )r   r   r   r   r   r   ÚreplayTo/   s   

ÿz"LimitedHistoryLogObserver.replayTo)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_DEFAULT_BUFFER_MAXIMUMr   Úintr   r   r   r   r   r   r   r   r   r	      s
    r	   N)r   Úcollectionsr   Útypingr   r   Úzope.interfacer   Ú_interfacesr   r   r   r	   r   r   r   r   Ú<module>   s   