Your IP : 216.73.216.213
�D�Z� � @ sn d d l Z d d d g Z d d d d d d d d �Z d d d d d d � Z Gd d � d e j � Z d S)
� N�open_connection�open_unix_connection�StreamReader�loop�parserc
� s� | d k r t j � } t d | d | � } t j | d | �� | j � f d d � | | | � Id H\ } } t j | � | | � } | | f S)N�limitr c s � S)N� r )�protocolr �@/opt/alt/python35/lib/python3.5/site-packages/aioredis/stream.py�<lambda> s z!open_connection.<locals>.<lambda>)�asyncio�get_event_loopr �StreamReaderProtocol�create_connection�StreamWriter)
�host�portr r r �kwds�reader� transport�_�writerr )r r
r
s )c � s� | d k r t j � } t d | d | � } t j | d | �� | j � f d d � | | � Id H\ } } t j | � | | � } | | f S)Nr r c s � S)Nr r )r r r
r ! s z&open_unix_connection.<locals>.<lambda>)r r
r r Zcreate_unix_connectionr ) �addressr r r r r r r r r )r r
r s &c @ sd e Z d Z d Z d Z d d � Z d d � Z d d � Z d d
� Z e Z e Z
e Z e Z d S)r a
Override the official StreamReader to address the
following issue: http://bugs.python.org/issue30861
Also it leverages to get rid of the dobule buffer and
get rid of one coroutine step. Data flows from the buffer
to the Redis parser directly.
Nc C s9 | | _ | j r5 | j j | j � | j d d � =d S)N)�_parser�_buffer�feed)�selfr r r r
�
set_parser1 s zStreamReader.set_parserc C sa | j s t d � � | s d S| j d k rC | j j | � d S| j j | � | j � d S)Nzfeed_data after feed_eof)�_eof�AssertionErrorr r �extendr Z_wakeup_waiter)r �datar r r
� feed_data7 s zStreamReader.feed_datac � ss | j d k s t d � � xQ | j j � } | d k r= | S| j rO | j � | j rY P| j d � Id Hq Wd S)ze
Return a parsed Redis object or an exception
when something wrong happened.
Nzset_parser must be calledF�readobj)r r ZgetsZ
_exceptionr Z_wait_for_data)r �objr r r
r# G s zStreamReader.readobjc � s t d � � d S)NzUse readobj)�RuntimeError)r �args�kwargsr r r
�_read_not_alloweda s zStreamReader._read_not_allowed)
�__name__�
__module__�__qualname__�__doc__r r r"