U
    
W[                     @   sH   d Z ddlmZ ddlmZ ddlmZ dZeeG dd deZ	d	S )
z'
Log observer that maintains a buffer.
    )deque)implementer   )ILogObserveri   c                   @   s,   e Zd ZdZefddZdd Z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}]
        >>>
    c                 C   s   t |d| _dS )z
        @param size: The maximum number of events to buffer.  If L{None}, the
            buffer is unbounded.
        @type size: L{int}
        )maxlenN)r   _buffer)selfsize r   8/usr/lib/python3/dist-packages/twisted/logger/_buffer.py__init__&   s    z"LimitedHistoryLogObserver.__init__c                 C   s   | j | d S )N)r   append)r	   eventr   r   r   __call__/   s    z"LimitedHistoryLogObserver.__call__c                 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.
        @type otherObserver: L{ILogObserver}
        N)r   )r	   ZotherObserverr   r   r   r   replayTo3   s    
z"LimitedHistoryLogObserver.replayToN)__name__
__module____qualname____doc___DEFAULT_BUFFER_MAXIMUMr   r   r   r   r   r   r   r      s   	r   N)
r   collectionsr   Zzope.interfacer   Z	_observerr   r   objectr   r   r   r   r   <module>   s   