3 \R' ã @ s” d Z ddlmZ ddddddgZG d d„ dƒZG d d„ deƒZG dd„ deƒZG dd„ deeƒZG d d„ deƒZG dd„ deƒZ G dd„ deƒZ dS )zAbstract Transport class.é )ÚcompatÚ BaseTransportÚ ReadTransportÚWriteTransportÚ TransportÚDatagramTransportÚSubprocessTransportc @ sD e Zd ZdZddd„Zddd„Zdd„ Zd d „ Zdd„ Zd d„ Z dS )r zBase class for transports.Nc C s |d kri }|| _ d S )N)Ú_extra)ÚselfÚextra© r ú*/usr/lib64/python3.6/asyncio/transports.pyÚ__init__ s zBaseTransport.__init__c C s | j j||ƒS )z#Get optional transport information.)r Úget)r ÚnameÚdefaultr r r Úget_extra_info s zBaseTransport.get_extra_infoc C s t ‚dS )z2Return True if the transport is closing or closed.N)ÚNotImplementedError)r r r r Ú is_closing s zBaseTransport.is_closingc C s t ‚dS )a Close the transport. Buffered data will be flushed asynchronously. No more data will be received. After all buffered data is flushed, the protocol's connection_lost() method will (eventually) called with None as its argument. N)r )r r r r Úclose s zBaseTransport.closec C s t ‚dS )zSet a new protocol.N)r )r Úprotocolr r r Úset_protocol$ s zBaseTransport.set_protocolc C s t ‚dS )zReturn the current protocol.N)r )r r r r Úget_protocol( s zBaseTransport.get_protocol)N)N) Ú__name__Ú __module__Ú__qualname__Ú__doc__r r r r r r r r r r r s c @ s e Zd ZdZdd„ Zdd„ ZdS )r z#Interface for read-only transports.c C s t ‚dS )z”Pause the receiving end. No data will be passed to the protocol's data_received() method until resume_reading() is called. N)r )r r r r Ú pause_reading0 s zReadTransport.pause_readingc C s t ‚dS )z…Resume the receiving end. Data received will once again be passed to the protocol's data_received() method. N)r )r r r r Úresume_reading8 s zReadTransport.resume_readingN)r r r r r r r r r r r - s c @ sJ e Zd ZdZddd„Zdd„ Zdd„ Zd d „ Zdd„ Zd d„ Z dd„ Z dS )r z$Interface for write-only transports.Nc C s t ‚dS )a¦ Set the high- and low-water limits for write flow control. These two values control when to call the protocol's pause_writing() and resume_writing() methods. If specified, the low-water limit must be less than or equal to the high-water limit. Neither value can be negative. The defaults are implementation-specific. If only the high-water limit is given, the low-water limit defaults to an implementation-specific value less than or equal to the high-water limit. Setting high to zero forces low to zero as well, and causes pause_writing() to be called whenever the buffer becomes non-empty. Setting low to zero causes resume_writing() to be called only once the buffer is empty. Use of zero for either limit is generally sub-optimal as it reduces opportunities for doing I/O and computation concurrently. N)r )r ÚhighÚlowr r r Úset_write_buffer_limitsD s z&WriteTransport.set_write_buffer_limitsc C s t ‚dS )z,Return the current size of the write buffer.N)r )r r r r Úget_write_buffer_sizeY s z$WriteTransport.get_write_buffer_sizec C s t ‚dS )z�Write some data bytes to the transport. This does not block; it buffers the data and arranges for it to be sent out asynchronously. N)r )r Údatar r r Úwrite] s zWriteTransport.writec C s t j|ƒ}| j|ƒ dS )z¯Write a list (or any iterable) of data bytes to the transport. The default implementation concatenates the arguments and calls write() on the result. N)r Zflatten_list_bytesr$ )r Zlist_of_datar# r r r Ú writelinese s zWriteTransport.writelinesc C s t ‚dS )z©Close the write end after flushing buffered data. (This is like typing ^D into a UNIX program reading from stdin.) Data may still be received. N)r )r r r r Ú write_eofn s zWriteTransport.write_eofc C s t ‚dS )zAReturn True if this transport supports write_eof(), False if not.N)r )r r r r Ú can_write_eofw s zWriteTransport.can_write_eofc C s t ‚dS )zÝClose the transport immediately. Buffered data will be lost. No more data will be received. The protocol's connection_lost() method will (eventually) be called with None as its argument. N)r )r r r r Úabort{ s zWriteTransport.abort)NN)r r r r r! r" r$ r% r&