Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib64/python3.7/site-packages/twisted/protocols/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/site-packages/twisted/protocols/__pycache__/dict.cpython-37.pyc

B

:��]
*�@s�dZddlmZddlmZmZddlmZddlm	Z	dd�Z
dd	�Zd
d�Zdd
�Z
Gdd�d�ZGdd�dej�ZGdd�de�ZGdd�de�ZGdd�dej�Zdd�Zdd�ZdS)zE
Dict client protocol implementation.

@author: Pavel Pergamenshchik
�)�basic)�defer�protocol)�log)�BytesIOcCs�|dkrdS|dd�dkr"d}nd}d}t|�}|dkrD|�d�x�|�d�}|dkrx|dkr�|�d�||��fSnf|dkr�|�d�}|dkr�d|fSnB|dkr�|dkr�||��fSd|fSn|d	kr�|dkr�||��fS||7}qFWdS)
zQChew one dqstring or atom from beginning of line and return (param, remaningline)�)Nrr��"��\N� )r�read)�line�mode�res�io�a�r�I/opt/alt/python37/lib64/python3.7/site-packages/twisted/protocols/dict.py�
parseParams6





rcCstdd�|�S)zMunch a string into an 'atom'cSs|tttd�dddg�kS)N�!�"�'�\)�map�chr�range)�xrrr�<lambda>5rzmakeAtom.<locals>.<lambda>)�filter)rrrr�makeAtom2sr cCsRtd�dddg}g}x,|D]$}t|�|kr6|�d�|�|�qWd�|�}|S)Nrrrrrr)r�ord�append�join)�sZ	mustquote�result�crrr�makeWord9s


r'cCsHt|�dkr|dkrdSt|�dkr@|dd�dkr@|dd�}|SdS)Nr�.rr
s..)�len)rrrr�	parseTextEs
r*c@seZdZdZdd�ZdS)�
DefinitionzA word definitioncCs||_||_||_||_dS)N)�name�db�dbdesc�text)�selfr,r-r.r/rrr�__init__QszDefinition.__init__N)�__name__�
__module__�__qualname__�__doc__r1rrrrr+Osr+c@seZdZdZdZdZdZdZdZdZ	dd�Z
dd�Zdd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Z d2d3�Z!d4d5�Z"d6d7�Z#d8d9�Z$d:d;�Z%d<d=�Z&d>d?�Z'dS)@�
DictClientzdict (RFC2229) clientNicCsd|_d|_dS)N)�datar%)r0rrrr1cszDictClient.__init__cCsd|_d|_dS)NZconn�command)�stater)r0rrr�connectionMadehszDictClient.connectionMadecCs,t|�|jdkrtd��tj�||�dS)z3Throw up if the line is longer than 1022 charactersr
z(DictClient tried to send a too long lineN)r)�
MAX_LENGTH�
ValueErrorr�LineReceiver�sendLine)r0rrrrr>mszDictClient.sendLinecCs�y|�d�}Wntk
r"dSX|jdkr4d}nNt|�dkrft�d|�|�d�|j��dSt	|dd��}|dd�}t
|d||jf|j�}||�dS)Nzutf-8r/�z-DictClient got invalid line from server -- %szInvalid line from server�zdictCode_%s_%s)
�decode�UnicodeErrorrr)r�msg�
protocolError�	transportZLoseConnection�int�getattrr9�dictCode_default)r0r�code�methodrrr�lineReceivedts


zDictClient.lineReceivedcCs&t�d|�|�d�|j��dS)zUnknown messagez3DictClient got unexpected message from server -- %szUnexpected server messageN)rrCrDrE�loseConnection)r0rrrrrH�s
zDictClient.dictCode_defaultcCsdS)z*We are about to get kicked off, do nothingNr)r0rrrr�dictCode_221_ready�szDictClient.dictCode_221_readycCsd|_|��dS)zGreeting message�readyN)r9�
dictConnected)r0rrrr�dictCode_220_conn�szDictClient.dictCode_220_conncCs|�d�|j��dS)Nz
Access denied)rDrErL)r0rrr�dictCode_530_conn�s
zDictClient.dictCode_530_conncCs|�d�|j��dS)NzServer temporarily unavailable)rDrErL)r0rrr�dictCode_420_conn�s
zDictClient.dictCode_420_conncCs|�d�|j��dS)Nz(Server shutting down at operator request)rDrErL)r0rrr�dictCode_421_conn�s
zDictClient.dictCode_421_conncCsR|jdkstd��d|_d|_d|_dt|�d��t|�d��f}|�|�dS)zSend a dict DEFINE commandrNz4DictClient.sendDefine called when not in ready stateN�definezDEFINE %s %szUTF-8)r9�AssertionErrorr%r7r �encoder'r>)r0�database�wordr8rrr�
sendDefine�s zDictClient.sendDefinecCsR|jdkstd��d|_d|_d|_dt|�t|�t|�f}|�|�d��dS)zSend a dict MATCH commandrNz3DictClient.sendMatch called when not in ready stateN�matchzMATCH %s %s %szUTF-8)r9rUr%r7r r>rV)r0rW�strategyrXr8rrr�	sendMatch�szDictClient.sendMatchcCsd|_|�d�dS)zInvalid databaserNN)r�defineFailed)r0rrrr�dictCode_550_define�szDictClient.dictCode_550_definecCsd|_|�d�dS)zInvalid databaserNN)r�matchFailed)r0rrrr�dictCode_550_match�szDictClient.dictCode_550_matchcCsd|_|�d�dS)zInvalid strategyrNN)rr_)r0rrrr�dictCode_551_match�szDictClient.dictCode_551_matchcCsd|_|�d�dS)zNo matchrNN)rr])r0rrrr�dictCode_552_define�szDictClient.dictCode_552_definecCsd|_|�d�dS)zNo matchrNN)rr_)r0rrrr�dictCode_552_match�szDictClient.dictCode_552_matchcCs
g|_dS)zn definitions retrievedN)r%)r0rrrr�dictCode_150_define�szDictClient.dictCode_150_definecCsld|_t|�\}}t|�\}}t|�\}}|r6|r6|sL|�d�|j��n|j�t|||g��g|_dS)zDefinition text followsr/zInvalid server responseN)	rrrDrErLr%r"r+r7)r0rrXr-r.rrr�dictCode_151_define�s
zDictClient.dictCode_151_definecCsd|_g|_g|_dS)zn matches found, text followsr/N)rr%r7)r0rrrr�dictCode_152_match�szDictClient.dictCode_152_matchcCs<t|�}|dkr,d|_|j|jd_d|_n|j�|�dS)z"A line of definition text receivedNr8���)r*rr7r%r/r")r0rrrrr�dictCode_text_define�szDictClient.dictCode_text_definecCsDdd�}t|�}|dkr4d|_t||j�|_d|_n|j�|�dS)zOne line of match text receivedcSs t|�\}}t|�\}}||fS)N)r)r$�p1�t�p2rrr�lsz)DictClient.dictCode_text_match.<locals>.lNr8)r*rrr7r%r")r0rrlrrrr�dictCode_text_match�szDictClient.dictCode_text_matchcCs |j}d|_d|_|�|�dS)�okNrN)r%r9�
defineDone)r0rrjrrr�dictCode_250_define
szDictClient.dictCode_250_definecCs |j}d|_d|_|�|�dS)rnNrN)r%r9�	matchDone)r0rrjrrr�dictCode_250_matchszDictClient.dictCode_250_matchcCsdS)z5override to catch unexpected dict protocol conditionsNr)r0�reasonrrrrDszDictClient.protocolErrorcCsdS)zCoverride to be notified when the server is ready to accept commandsNr)r0rrrrO"szDictClient.dictConnectedcCsdS)z8override to catch reasonable failure responses to DEFINENr)r0rsrrrr]'szDictClient.defineFailedcCsdS)z#override to catch successful DEFINENr)r0r%rrrro,szDictClient.defineDonecCsdS)z6override to catch resonable failure responses to MATCHNr)r0rsrrrr_1szDictClient.matchFailedcCsdS)z"override to catch successful MATCHNr)r0r%rrrrq6szDictClient.matchDone)(r2r3r4r5r7r;r9rr%�factoryr1r:r>rKrHrMrPrQrRrSrYr\r^r`rarbrcrdrerfrhrmrprrrDrOr]ror_rqrrrrr6YsJ
	r6c@seZdZdS)�InvalidResponseN)r2r3r4rrrrru<sruc@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�
DictLookupzNUtility class for a single dict transaction. To be used with DictLookupFactorycCs(|jjs$|jj�t|��|j��dS)N)rt�done�d�errbackru�
clientDone)r0rsrrrrDDszDictLookup.protocolErrorcCs:|jjdkr|j|jj�n|jjdkr6|j|jj�dS)NrTrZ)rt�	queryTyperY�paramr\)r0rrrrOJszDictLookup.dictConnectedcCs&|jj�g�|j��|j��dS)N)rtrx�callbackrzrErL)r0rsrrrr]Qs
zDictLookup.defineFailedcCs&|jj�|�|j��|j��dS)N)rtrxr}rzrErL)r0r%rrrroWs
zDictLookup.defineDonecCs&|jj�g�|j��|j��dS)N)rtrxr}rzrErL)r0rsrrrr_]s
zDictLookup.matchFailedcCs&|jj�|�|j��|j��dS)N)rtrxr}rzrErL)r0r%rrrrqcs
zDictLookup.matchDoneN)
r2r3r4r5rDrOr]ror_rqrrrrrvAsrvc@s@eZdZdZeZdZdd�Zdd�Zdd�Z	d	d
�Z
dd�ZdS)
�DictLookupFactoryz-Utility factory for a single dict transactionNcCs||_||_||_d|_dS)Nr)r{r|rxrw)r0r{r|rxrrrr1oszDictLookupFactory.__init__cCsd|_|`dS)zCalled by client when done.rN)rwrx)r0rrrrzvszDictLookupFactory.clientDonecCs|j�|�dS)N)rxry)r0�	connector�errorrrr�clientConnectionFailed|sz(DictLookupFactory.clientConnectionFailedcCs|js|j�|�dS)N)rwrxry)r0rr�rrr�clientConnectionLost�sz&DictLookupFactory.clientConnectionLostcCs|��}||_|S)N)rrt)r0�addr�prrr�
buildProtocol�szDictLookupFactory.buildProtocol)r2r3r4r5rvrrwr1rzr�r�r�rrrrr~jsr~cCs6t��}td||f|�}ddlm}|�|||�|S)z"Look up a word using a dict serverrTr)�reactor)r�Deferredr~�twisted.internetr��
connectTCP)�host�portrWrXrxrtr�rrrrT�s
rTcCs8t��}td|||f|�}ddlm}|�|||�|S)z Match a word using a dict serverrZr)r�)rr�r~r�r�r�)r�r�rWr[rXrxrtr�rrrrZ�s
rZN)r5Ztwisted.protocolsrr�rrZtwisted.pythonrrrrr r'r*r+r=r6�	ExceptionrurvZ
ClientFactoryr~rTrZrrrr�<module>	s "

d)"