Ñò !;Vc@sNdZddkZeiZdeifd„ƒYZdefd„ƒYZdS(sXxdr - RAD XDR support This module is the implementation of the RAD python XDR support. iÿÿÿÿNt RADUnpackercBseZdZd„ZRS(s? Override default XDR array unpacking to fit RAD architecture. cCsZg}d}xG||jo9y|i|ƒƒ|d7}Wqtj oPqXqW|S(Nii(tappendtEOFError(tselftnitemst unpack_itemtitemsti((s../common/encodings/xdr.pyt unpack_farray(s  (t__name__t __module__t__doc__R(((s../common/encodings/xdr.pyR%stRecordMarkingSocketcBsqeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z RS( s* Implementation of XDR/RPC Record Marking cCs(||_d|_t|_t|_dS(Ni(t_sockett _remainingtTruet_atlasttFalset_eof(Rtsocket((s../common/encodings/xdr.pyt__init__7s   cCs|S(N((R((s../common/encodings/xdr.pyt __enter__=scCs|iƒtS(N(tcloseR(Rtexc_typetexc_valtexc_tb((s../common/encodings/xdr.pyt__exit__@s cCsxd}|}xet|ƒ|joQ|ii|ƒ}t|ƒ}|djot|_dS||8}||7}qW|S(s* Internal: read nbytes or else (mark EOF) ti(tlenR trecvRR(Rtnbytestalldatat remainingtdatatldata((s../common/encodings/xdr.pyt really_readDs    cCs‘|idƒ}|iodSt|ƒdjpt‚d}x,tdƒD]}|dt||ƒ}qKW|d@dj|_|d@|_dS(s) Internal: read the next fragment header iNiiliÿÿÿ(R#RRtAssertionErrortrangetordRR(RR!taccR((s../common/encodings/xdr.pyt read_headerRs  cCs}|idjo|i|iƒnxI|i o=|i o2|iƒ|idjo|i|iƒq'q'Wt|_dS(s Skip this record iN(RR#RRR(R(R((s../common/encodings/xdr.pyt skip_record^s cCs¢xB|ip|idjo'|ip |iodS|iƒqWt|i|ƒ}|ii|ƒ}|it|ƒ8_t|ƒdjo t|_n|S(s Read up to nbytes iR( RRRR(tminR RRR(RRtamtR!((s../common/encodings/xdr.pytreadhs cCs‹d}x~|i p|idjob|idjo5|i|iƒ}||7}|it|ƒ8_n |iƒ|iodSq W|S(s Read a whole record Ri(RRR#RR(R(RRR!((s../common/encodings/xdr.pyt read_recordus    cCsktiƒ}|o|it|ƒdBƒn|it|ƒƒ|ii|iƒƒ|ii|ƒdS(s# Simple non-buffered write routine lN(txdrlibtPackert pack_uintRR tsendallt get_buffer(Rtbuftlasttwpacker((s../common/encodings/xdr.pytwriteƒs  cCs3tiƒ}|idƒ|ii|iƒƒdS(s End a record lN(R.R/R0R R1R2(Rtrpacker((s../common/encodings/xdr.pyt end_records  cCs|iiƒdS(s Close the socket N(R R(R((s../common/encodings/xdr.pyR“s(R R R RRRR#R(R)R,R-R6R8R(((s../common/encodings/xdr.pyR 4s      (R R.R/t RADPackertUnpackerRtobjectR (((s../common/encodings/xdr.pyts