Ë
    ojù  ã                   ón   — 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	«      «       Zy
)z'
Log observer that maintains a buffer.
é    )Údeque)ÚDequeÚOptional)Úimplementeré   )ÚILogObserverÚLogEventi   c                   óJ   — e Zd ZdZefdee   ddfd„Zdeddfd„Z	de
ddfd	„Zy)
Ú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                 ó&   — t        |¬«      | _        y)zx
        @param size: The maximum number of events to buffer.  If L{None}, the
            buffer is unbounded.
        )ÚmaxlenN)r   Ú_buffer)Úselfr   s     ú8/usr/lib/python3/dist-packages/twisted/logger/_buffer.pyÚ__init__z"LimitedHistoryLogObserver.__init__%   s   € ô
 ).°TÔ(:ˆ�ó    Úeventc                 ó:   — | j                   j                  |«       y )N)r   Úappend)r   r   s     r   Ú__call__z"LimitedHistoryLogObserver.__call__,   s   € Ø�‰×Ñ˜EÕ"r   ÚotherObserverc                 ó6   — | j                   D ]
  } ||«       Œ y)z†
        Re-play the buffered events to another log observer.

        @param otherObserver: An observer to replay events to.
        N)r   )r   r   r   s      r   ÚreplayToz"LimitedHistoryLogObserver.replayTo/   s   € ð —\‘\ò 	!ˆEÙ˜%Õ ñ	!r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_DEFAULT_BUFFER_MAXIMUMr   Úintr   r	   r   r   r   © r   r   r   r      sJ   „ ñð  .Eñ ;˜X c™]ð ;Èó ;ð#˜hð #¨4ó #ð! lð !°tô !r   r   N)r   Úcollectionsr   Útypingr   r   Úzope.interfacer   Ú_interfacesr   r	   r    r   r"   r   r   ú<module>r'      s<   ðñ
õ ß "å &ç /à#Ð ñ ˆ\Ó÷"!ð "!ó ñ"!r   