e f@sddlZddlZddlZddlZddlZddlZddlZddlmZdddddgZ ej d kpe ed oe ed oe ejd Z Gd ddej ZejZdddZej d krfe dddg7Z ddlZddddZddZddZddZGdddeZnje dddg7Z ddlZej dkZddZddZddZddZd dZd!d"ZGd#d$d$Zeeej ed%d&Z!eee"j#e!eee$j%e!d'd(Z&d)d*Z'eej(e&ej d krd+d,Z)d-d.Z*eeje)n(d/d,Z)d0d.Z*eeje)dS)1N)context send_handle recv_handleForkingPicklerregisterdumpwin32CMSG_LEN SCM_RIGHTSsendmsgcsgeZdZdZiZejZfddZe ddZ e dddZ e j Z S) rz)Pickler subclass used by multiprocessing.cs9tj||jj|_|jj|jdS)N)super__init___copyreg_dispatch_tablecopydispatch_tableupdate_extra_reducers)selfargs) __class__>/opt/alt/python34/lib64/python3.4/multiprocessing/reduction.pyr%szForkingPickler.__init__cCs||j|r.r3r4r0r/r?r5r6)rrCrrrr;ts zDupHandle.detach)r"r#r$r%rr;rrrrr+cs DupFdsendfdsrecvfdsdarwincCs~tjd|}tt|dg}|j|gtjtj|fgtrz|jddkrzt dndS)z,Send an array of fds over an AF_UNIX socket.irAz%did not receive acknowledgement of fdN) arraybyteslenr socket SOL_SOCKETr ACKNOWLEDGEr: RuntimeError)sockZfdsmsgrrrrEs %c Cs4tjd}|j|}|jdtj|\}}}}| rZ| rZtnytrs|jdnt|dkrt dt|n|d\}} } |tj kr| tj krt| |jdkrt n|j | t|SWnt tfk r#YnXt ddS)z/Receive an array of fds over an AF_UNIX socket.rHrrJzreceived %d items of ancdatarzInvalid data receivedN)rKitemsizeZrecvmsgrNr EOFErrorrPr7rMrQrOr ValueErrorZ frombyteslist IndexError) rRsizeaZ bytes_sizerSZancdataflagsZaddrZ cmsg_levelZ cmsg_typeZ cmsg_datarrrrFs* '   c Cs>tj|jtjtj}t||gWdQXdS)z&Send a handle over a local connection.N)rNfromfdfilenoAF_UNIX SOCK_STREAMrE)r8r2r9srrrrs$c Cs?tj|jtjtj}t|ddSWdQXdS)z)Receive a handle over a local connection.rrN)rNr\r]r^r_rF)r8r`rrrrs$cCsatj}|dk r.|j|j|StrQddlm}|j|StddS)zReturn a wrapper for an fd.Nr)resource_sharerz&SCM_RIGHTS appears not to be available)rZget_spawning_popenrDZduplicate_for_childHAVE_SEND_HANDLErarV)fdZ popen_objrarrrrDs   cCsE|jdkr(t|j|jjffSt|j|jjffSdS)N)__self__getattrr__func__r")mrrr_reduce_methodsric@seZdZddZdS)_CcCsdS)Nr)rrrrfsz_C.fN)r"r#r$rkrrrrrjs rjcCst|j|jffS)N)rf __objclass__r")rhrrr_reduce_method_descriptorsrmcCs"t|j|j|jpiffS)N)_rebuild_partialfuncrkeywords)prrr_reduce_partialsrrcCstj|||S)N) functoolspartial)rorrprrrrnsrncCs#ddlm}t||ffS)Nr) DupSocket)raru_rebuild_socket)r`rurrr_reduce_socketsrwcCs |jS)N)r;)ZdsrrrrvsrvcCs1t|j}t||j|j|jffS)N)rDr]rvfamilyrproto)r`dfrrrrwscCs%|j}tj|||d|S)Nr])r;rN)rzrxrryrdrrrrvs )+r&rsrr<r(rNsysrcr__all__platformhasattrrbZPicklerrrrr.r,r-rrobjectr+rKrPrErFrDrirjrrkrmrWappendint__add__rrrnrtrwrvrrrr s^           #