Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/twisted/protocols/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyc


[XMc@sdZddlmZddlmZmZddlmZddlmZdZ	dZ
dZd	Zd
ddYZ
dejfd
YZdefdYZdefdYZdejfdYZdZdZdS(sE
Dict client protocol implementation.

@author: Pavel Pergamenshchik
i(tbasic(tdefertprotocol(tlog(tStringIOcCsL|dkrd	S|ddkr)d}nd}d}t|}|dkr]|jdnx|jd}|dkr|dkr;|jd||jfSn|dkr|jd}|dkr;d|fSn`|dkr|dkr||jfSd|fSn+|dkr;|dkr;||jfSn||7}q`dS(
sQChew one dqstring or atom from beginning of line and return (param, remaningline)tit"iis\t N(NR(tNoneRtread(tlinetmodetrestiota((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyt
parseParams6	


cCstd|S(sMunch a string into an 'atom'cSs&|tttddddgkS(Ni!i"i'i\(tmaptchrtrange(tx((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyt<lambda>3s(tfilter(R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytmakeAtom0scCsrtddddg}g}x=|D]5}t||krN|jdn|j|q&Wdj|}|S(Ni!i"i'i\s\R(Rtordtappendtjoin(tst	mustquotetresulttc((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytmakeWord5s
cCs\t|dkr"|dkr"dSt|dkrT|dd!dkrT|d}n|SdS(Nit.iis..(tlenR(R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyt	parseText?s
%
t
DefinitioncBseZdZdZRS(sA word definitioncCs(||_||_||_||_dS(N(tnametdbtdbdescttext(tselfR#R$R%R&((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyt__init__Is			(t__name__t
__module__t__doc__R((((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyR"Gst
DictClientcBs@eZdZd ZdZd Zd Zd Zd Z	dZ
dZdZdZ
dZdZdZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'RS(!sdict (RFC2229) clienticCsd|_d|_dS(N(RtdataR(R'((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyR(Ys	cCsd|_d|_dS(Ntconntcommand(tstateR(R'((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytconnectionMade]s	cCs?t||jdkr(tdntjj||dS(s3Throw up if the line is longer than 1022 charactersis(DictClient tried to send a too long lineN(R t
MAX_LENGTHt
ValueErrorRtLineReceivertsendLine(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyR5ascCsy|jd}Wntk
r'dSX|jdkr@d}n[t|dkrtjd||jd|jjdSt	|d }|d}t
|d||jf|j}||dS(NsUTF-8R&is-DictClient got invalid line from server -- %ssInvalid line from serverisdictCode_%s_%s(
tdecodetUnicodeErrorRR Rtmsgt
protocolErrort	transporttLoseConnectiontinttgetattrR0tdictCode_default(R'R
tcodetmethod((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytlineReceivedgs
	


"cCs/tjd||jd|jjdS(sUnkown messages3DictClient got unexpected message from server -- %ssUnexpected server messageN(RR8R9R:tloseConnection(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyR>ys
cCsdS(s*We are about to get kicked off, do nothingN((R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_221_readyscCsd|_|jdS(sGreeting messagetreadyN(R0t
dictConnected(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_220_conns	cCs|jd|jjdS(Ns
Access denied(R9R:RB(R'((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_530_conns
cCs|jd|jjdS(NsServer temporarily unavailable(R9R:RB(R'((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_420_conns
cCs|jd|jjdS(Ns(Server shutting down at operator request(R9R:RB(R'((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_421_conns
cCsu|jdkstdd|_d|_d|_dt|jdt|jdf}|j|dS(sSend a dict DEFINE commandRDs4DictClient.sendDefine called when not in ready statetdefinesDEFINE %s %ssUTF-8N(	R0tAssertionErrorRRR-RtencodeRR5(R'tdatabasetwordR/((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyt
sendDefines			.cCsu|jdkstdd|_d|_d|_dt|t|t|f}|j|jddS(sSend a dict MATCH commandRDs3DictClient.sendMatch called when not in ready statetmatchsMATCH %s %s %ssUTF-8N(R0RKRRR-RR5RL(R'RMtstrategyRNR/((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyt	sendMatchs			%cCsd|_|jddS(sInvalid databaseRDN(RtdefineFailed(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_550_defines	cCsd|_|jddS(sInvalid databaseRDN(RtmatchFailed(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_550_matchs	cCsd|_|jddS(sInvalid strategyRDN(RRU(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_551_matchs	cCsd|_|jddS(sNo matchRDN(RRS(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_552_defines	cCsd|_|jddS(sNo matchRDN(RRU(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_552_matchs	cCs
g|_dS(sn definitions retrievedN(R(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_150_definescCsd|_t|\}}t|\}}t|\}}|oN|oN|sn|jd|jjn(|jjt|||gg|_dS(sDefinition text followsR&sInvalid server responseN(	RRR9R:RBRRR"R-(R'R
RNR$R%((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_151_defines	
cCsd|_g|_g|_dS(sn matches found, text followsR&N(RRR-(R'R
((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_152_matchs		cCsTt|}|dkr@d|_|j|jd_d|_n|jj|dS(s"A line of definition text receivedR/iN(R!RRR-RR&R(R'R
R((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_text_defines	cCs_d}t|}|dkrKd|_t||j|_d|_n|jj|dS(sOne line of match text receivedcSs.t|\}}t|\}}||fS(N(R(Rtp1tttp2((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytlsR/N(R!RRRR-RR(R'R
RaR((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_text_matchs		cCs,|j}d|_d|_|j|dS(tokRDN(RRR0t
defineDone(R'R
R_((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_250_defines			cCs,|j}d|_d|_|j|dS(RcRDN(RRR0t	matchDone(R'R
R_((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytdictCode_250_matchs			cCsdS(s5override to catch unexpected dict protocol conditionsN((R'treason((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyR9scCsdS(sCoverride to be notified when the server is ready to accept commandsN((R'((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyREscCsdS(s8override to catch reasonable failure responses to DEFINEN((R'Rh((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRSscCsdS(s"override to catch succesful DEFINEN((R'R((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRdscCsdS(s6override to catch resonable failure responses to MATCHN((R'Rh((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRUscCsdS(s!override to catch succesful MATCHN((R'R((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRfsN((R)R*R+RR-R2R0RRtfactoryR(R1R5RAR>RCRFRGRHRIRORRRTRVRWRXRYRZR[R\R]RbReRgR9RERSRdRURf(((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyR,OsJ																					
		
								tInvalidResponsecBseZRS((R)R*(((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRjst
DictLookupcBsDeZdZdZdZdZdZdZdZRS(sNUtility class for a single dict transaction. To be used with DictLookupFactorycCs9|jjs5|jjjt||jjndS(N(RitdonetdterrbackRjt
clientDone(R'Rh((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyR9scCsZ|jjdkr+t|j|jjn+|jjdkrVt|j|jjndS(NRJRP(Rit	queryTypetapplyROtparamRR(R'((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRE!scCs1|jjjg|jj|jjdS(N(RiRmtcallbackRoR:RB(R'Rh((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRS's
cCs1|jjj||jj|jjdS(N(RiRmRsRoR:RB(R'R((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRd,s
cCs1|jjjg|jj|jjdS(N(RiRmRsRoR:RB(R'Rh((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRU1s
cCs1|jjj||jj|jjdS(N(RiRmRsRoR:RB(R'R((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRf6s
(	R)R*R+R9RERSRdRURf(((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRks					tDictLookupFactorycBsGeZdZeZdZdZdZdZ	dZ
dZRS(s-Utility factory for a single dict transactioncCs(||_||_||_d|_dS(Ni(RpRrRmRl(R'RpRrRm((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyR(As			cCsd|_|`dS(sCalled by client when done.iN(RlRm(R'((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRoGs	cCs|jj|dS(N(RmRn(R't	connectorterror((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytclientConnectionFailedLscCs |js|jj|ndS(N(RlRmRn(R'RuRv((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pytclientConnectionLostOs	cCs|j}||_|S(N(RRi(R'taddrtp((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyt
buildProtocolSs	N(R)R*R+RkRRRlR(RoRwRxR{(((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRt<s				cCsKtj}td||f|}ddlm}|j||||S(s"Look up a word using a dict serverRJi(treactor(RtDeferredRtttwisted.internetR|t
connectTCP(thosttportRMRNRmRiR|((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRJYs
cCsNtj}td|||f|}ddlm}|j||||S(s Match a word using a dict serverRPi(R|(RR}RtR~R|R(RRRMRQRNRmRiR|((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyRPbs
N((R+ttwisted.protocolsRR~RRttwisted.pythonRRRRRR!R"R4R,t	ExceptionRjRkt
ClientFactoryRtRJRP(((s:/usr/lib/python2.7/dist-packages/twisted/protocols/dict.pyt<module>	s	 		
	#