ó ¡ôXc@s¬ddlZddlZddlZddlZddlZddlZddlZdd„Z de d„Z de d„Z dd„Z de d„Zde d„ZdS(iÿÿÿÿNc CsLtjdtd|fdi|d6ƒ}|jƒtjjj|jƒdS(Nttargettargstkwargst out_mpconn( tmultiprocessingtProcesst_delete_part_fileststartt euca2oolstbundletutiltwaitpid_in_threadtpid(t in_mpconnRtdel_p((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pytcreate_bundle_part_deleter$s   c Csˆtjdtƒ\}}tjdtd||||fdi|d6|d6ƒ}|jƒ|jƒ|jƒtjj j |j ƒ|S(NtduplexRRRtpart_write_semtdebug( RtPipetFalseRt _write_partsRtcloseRR R R R (tinfilet part_prefixt part_sizeRRtpartinfo_result_rtpartinfo_result_wtwriter_p((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pytcreate_bundle_part_writer,s    c Csxtjdtƒ\}}tjdtd||fdi|d6|d6ƒ}|jƒ|jƒtjj j |j ƒ|S(NRRRRRR( RRRRt_aggregate_mpconn_itemsRRRR R R R (R RRtresult_mpconn_rtresult_mpconn_wtagg_p((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pytcreate_mpconn_aggregator;s   cCs©tjjjd||fƒzbyIxBtrf|jƒ}tj|jƒ|dk r%|j |ƒq%q%WWnt k r|dSXWd|j ƒ|dk r¤|j ƒnXdS(Nt except_fds( RR R t close_all_fdstTruetrecvtostunlinktfilenametNonetsendtEOFErrorR(R Rtpart((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pyRFs       cCstjjjd|||fƒg}z­yFx?trl|jƒ}|j|ƒ|dk r.|j|ƒq.q.WWn`t k r³y|j|ƒWqÑt k r¯|s©dS‚qÑXnt k rÐ|sÊdS‚nXWd|j ƒ|j ƒ|dk r|j ƒnXdS(NR#( RR R R$R%R&tappendR*R+R,tIOErrorR(R t result_mpconnRRtresultst next_result((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pyRVs2            c Csö||g}|dk rwtjdkrwy|jt|jjƒƒWqwtk r]d}qwtk rsd}qwXnt j j j d|ƒxbt jƒD]T}|dk r¹|jƒndj||ƒ}tjƒ} t|dƒâ} d} |} xž| dkr•y|jt| t jƒƒ} Wn(tk rM|sG|jƒdS‚nX| r‘| j| ƒ| j| ƒ| t| ƒ8} | t| ƒ7} qøPqøWt j j|| jƒd| ƒ}|j|ƒWdQX| |krš|jƒ|jƒdSqšWdS(NtdarwinR#s{0}.part.{1:02}twitSHA1(R*tsystplatformR.tintt_semlockthandletAttributeErrort ValueErrorRR R R$t itertoolstcounttacquiretformatthashlibtsha1topentreadtmintBUFSIZERtwritetupdatetlent BundlePartt hexdigestR+(RRRtpartinfo_mpconnRRR#tpart_not part_fnamet part_digestR-t bytes_writtentbytes_to_writetchunktpartinfo((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pyRusL                 (RAR=RR'R6teuca2ools.bundle.pipesRteuca2ools.bundle.utilR*RRRR"RRR(((sC/usr/lib/python2.7/site-packages/euca2ools/bundle/pipes/fittings.pyts