+
    	:i  c                   s   ^ RI Ht ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
 ^ RIt^ RIt^ RIt^ RIt^ RI5 ^ RIHt ^ RI5 ^ RIHtHt ^ RI5 . R3Ot]P2                  ! R4      t]P2                  ! R4      t]P2                  ! R4      t]! RR4      tR4R ltR tR t R t!R t"R t#R t$R t%R t& ! R R]	P                  4      t']	PP                  ! ]'4        ! R R])4      t*]*! R]+4      ]*! R],4      ]*! R ]+4      .t- ! R! R"])4      t. ! R# R$])4      t/]/! 4       t0R% t1R& t2R' t3R( t4 ! R) R])4      t5 ! R* R+])4      t6 ! R, R]64      t7 ! R- R.4      t8 ! R/ R	])4      t9 ! R0 R
]6]94      t: ! R1 R2])4      t;R# )5    )absolute_import)print_functionN)GObjectGLib)Z*)
get_config)xml_child_elementsxml_get_child_elements_by_nameConnectionState	RpcManage
RpcChannelListeningServerSocketAddresszcontent-length:(\d+)z

z([a-zA-Z0-9_-]+):(.*)
Zgenerali18n_encodingc                 s6   . p\         P                  ! R 4      p\        RV ,          4       V '       g   V# \         P                  ! RV 4      pV F  pV'       g   K  VP	                  V4      pV'       d`   VP                  ^4      P                  4       pVP                  ^4      p\        P                  V4      p	V	f   \        RV: RV: 24       K  M\        P                  p	Tp\        WV4      p
VP                  V
4       K  	  \        RX: RX
: 24       V# )z\s*{(unix|inet)}(.+)z%parse_socket_address_list: input='%s'z[\s,]+zunknown socket family - z in address zparse_socket_address_list: z --> )recompile	log_debugZsplitsearchgrouplowerr   
map_familySocketAF_INETappend)addr_stringdefault_portsocket_addressesZ	family_reZaddrsZcfg_addrmatchZ
family_tagaddressfamilysocket_addresss   &&         7/usr/lib/python3.14/site-packages/setroubleshoot/rpc.pyparse_socket_address_listr    D   s    

23I5CDHHY,E  *Q--/Jkk!nG"--j9F~
T\]^  ^^FG&vE/# & .QR    c                  s(    \        R R\        4      p V # )Z
connectionr   )r   int)r       r   get_default_portr$   c   s    lNC@Lr!   c                 s4    \        V R 4      p\        V4      pV# )Zaddress_list)r   r    )Zcfg_sectionr   r      &  r   get_socket_list_from_configr&   h   s    [.9K0=r!   c                  sN    \        R 4      p \        V 4      ^ 8X  d   R# V ^ ,          # )Zclient_connect_toN)r&   len)Z	addr_listr#   r   get_local_server_socket_addressr(   n   s&    +,?@I
9~Q<r!   c                 sb   . pV \         P                  ,          '       d   VP                  R 4       V \         P                  ,          '       d   VP                  R4       V \         P                  ,          '       d   VP                  R4       V \         P
                  ,          '       d   VP                  R4       V \         P                  ,          '       d   VP                  R4       V \         P                  ,          '       d   VP                  R4       RV RP                  V4      3,          # )ZINZOUTZPRIZERRHUPZNVALz(%d)[%s],)	r   IO_INr   ZIO_OUTZIO_PRIIO_ERRIO_HUPIO_NVALjoin)io_conditionnames   & r   io_condition_to_stringr3   u   s    Egmm##Tgnn$$Ugnn$$Ugnn$$Ugnn$$Ugoo%%Vsxx777r!   c                 s    R \        V 4      ,          p\        VP                  4       4       F  w  r4W#: RV: R2,          pK  	  VR,          pV# )zcontent-length: %d
: z
)r'   listZitems)bodyZkwdshdrkeyvalues   &,   r   
rpc_headerr:      sD    
"SY
.C4::<(
sE** )6MCJr!   c                 s,    \        W VR 7      pW2,           # ))rpc_idtype)r:   )r;   r<   r6   r7   s   &&& r   rpc_messager=      s    
Tt
4C:r!   c                 s   R ;p;p;r4 \         P                  ! V 4      pVP                  4       p V P                  R4      pV P                  R4      p\        P                  W4      p\        V R4      p\        \        V4      4      pV F  pVP                  R4      pVP                  R4      p	\        VP                  R4      4      p
VP                  V
,          pVP                  e7   V	R8X  d   VP                  WxR7      pM(VP                  VP                  4      pMVP                  pWV
&   K  	  Ve   VP                  4        YT3#   Te   TP                  4        i i ; i)	N	interfacemethodargnamer<   positionxml)Zobj_name)libxml2ZparseDocZgetRootElementZpropinterface_registryget_rpc_defr   preextend_listr'   r"   positional_argsobj_typeZcontentfreeDoc)cmdr>   r?   argsdocrpc_defZ	arg_nodesarg_nodearg_nameZarg_typeZarg_positionrpc_arg	arg_values   &            r   convert_rpc_xml_to_argsrS      sJ   &**I**"s#  "HH[)	(# %00C23>	c)n-!H}}V,H}}V,Hx}}Z89L--l;G+u$ ' 0 0 0 MI ' 0 01A1A BI$,,	!* " ?KKMd"" ?KKM s   D)E
 
E!c                 s:   R ;r4 VP                   pVP                  p\        P                  ! R4      p\        P                  ! R4      pVP                  RV4       VP                  RV4       VP                  V4       ^ pVP                   EF*  p	V	P                  p
W(,          p\        P                  ! R4      pVP                  V4       VP                  RV
4       VP                  R\        V4      4       \        V\        P                  4      '       d%   VP                  RR	4       VP                  V4       Mq\        VR
4      '       d4   VP                  RR	4       VP                  VP                  WJ4      4       M,VP                  RR4       VP                  \        V4      4       V^,          pEK-  	  VP                  R\        V4      4       VP!                  \"        ^R7      pVe   VP%                  4        V#   Te   TP%                  4        i i ; i)Nz1.0rK   r>   r?   r@   rA   rB   r<   rC   get_xml_nodesZstringZ	arg_count)ZencodingZformat)r>   r?   rD   ZnewDocZnewNodeZsetPropZsetRootElementrH   rA   ZaddChildstr
isinstanceZxmlNodeZhasattrrT   Z
addContentZ	serializer   rJ   )r;   rN   rL   Ztext_docrM   r>   r?   ZrootrB   rQ   rP   rR   rO   s   &&*          r   convert_rpc_to_xmlrW      s   H %%	nnU#u%[),Xv&4 ..G||HIu-HMM(#VX.ZX7)W__55  /!!),O44  /!!)"9"9#"HI  2##C	N3MH! /" 	[#h-0==-=B?KKMO ?KKM s   G(H Hc                   s  a  ] tR t^t o ^t^t^t^t^ t^@t	^t
]],          ],          ],          ],          ]	,          ]
,          t]],          t]],          ]	,          ]
,          t]R]R]R]R]R]	R]
R/t]]]]]]	]
.tR]P"                  P$                  R	]P&                  ]P&                  ]P&                  33/tR
 tR tR tR tR tR tR tRR ltRtV tR	# )r   
CONNECTINGOPENAUTHENTICATEDr)   ERRORTIMEOUTRETRYchangedNc                s    \         P                   P                  V 4       ^ V n        RV n        RV n        V P                  4        R# r    N)r   __init__flagsresult_code
result_msgclear_resultself   &r   r`   ZConnectionState.__init__  s6      &
r!   c                st    R V P                  V P                  4      V P                  V P                  3,          # )z'flags=%s, result_code=%d, result_msg=%s)flags_to_stringra   rb   rc   re   rg   r   __str__ZConnectionState.__str__  s4    8$$TZZ0$2B2BDOOTU 	Ur!   c                s>    V P                  ^ V P                  4       R# r_   )update	ALL_FLAGSre   rg   r   clearZConnectionState.clear  s    At~~&r!   c                s    Vf   ^ p. p\         P                   F9  pW,          '       g   K  VP                  \         P                  V,          4       K;  	  RP	                  V4      # )Nr*   )r   connection_statesr   map_connection_enum_to_stringr/   )rf   Zvalr1   Zstate   &&  r   rh   ZConnectionState.flags_to_string  sO    ;C$66E{{_JJ5QR 7 xxr!   c                s"    ^ V n         RV n        R# )r     Nrb   rc   re   rg   r   rd   ZConnectionState.clear_result  s    r!   c                    Wn         W n        R # Nrq   )rf   rb   rc      &&&r   
set_resultZConnectionState.set_result   s    &$r!   c                s2    V P                   V P                  3# rs   rq   re   rg   r   
get_resultZConnectionState.get_result$  s    11r!   c                sD   V P                   pV ;P                   V,          un         V ;P                   V( ,          un         W0n        W@n        WPP                   ,          pV P                   V,          pWV,          pV'       d    V P                  R V P                   Wx4       R# R# )r^   N)ra   rb   rc   Zemit)	rf   	add_flagsremove_flagsrb   rc   Zprevious_flagsZ
differenceZflags_addedZflags_removeds	   &&&&&    r   rj   ZConnectionState.update'  st    

i


|m#
&$#jj0
jj:-&3 IIi[H r!   )ra   rb   rc   r    r    r    rp   )__name__
__module____qualname____firstlineno__rX   rY   rZ   r)   r[   r\   r]   rk   
GOOD_FLAGSPROBLEM_FLAGSrn   rm   r   ZSignalFlagsZRUN_LASTZTYPE_INTZ__gsignals__r`   ri   rl   rh   rd   ru   rv   rj   __static_attributes____classdictcell__Z__classdict__   @r   r   r      s    JDMCEGET!M1C7%?'IEQI%J%K')E1M 	LfUww%! $T=#uguU 					%	%tg.>.>@P@PRYRbRb-cdL
U'%2I Ir!   c                   s0   a  ] tR tRt o RR ltR tRtV tR# )RpcArgi=  Nc                rr   rs   rA   rI   )rf   rA   rI   rt   r   r`   ZRpcArg.__init__?  s    	 r!   c                s    V P                   f   RpMV P                   pV P                  f   V# V: RV P                  : 2# )NZname_undefined:r   )rf   rA   r2   r   ri   ZRpcArg.__str__C  s8    99#D99D== K"DMM22r!   r   NN)rz   r{   r|   r}   r`   ri   r   r   r   r   r   r   r   =  s     !3 3r!   r   r?   err_codeerr_msgc                   P   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )RpcDefinitioniR  c                s^    Wn         W n        W0n        R V n        Vf
   . V n        R # W@n        R # rs   )r<   r>   r?   callbackrH   )rf   r<   r>   r?   Zrpc_args   &&&&&r   r`   ZRpcDefinition.__init__T  s,    	"#%D #+ r!   c           
     s   . pV P                   ek   V P                    FZ  pVP                  e/   VP                  VP                  : RVP                  : 24       K?  VP                  VP                  4       K\  	  RV P                  : RV P
                  : RV P                  : RRP                  V4      : R2	pV P                  R8X  d   VRV P                  ,          ,          pV# )	Nr   Z[z] z (r*   )r?   z callback=%s)	rH   rI   r   rA   r<   r>   r?   r/   r   )rf   rL   rQ   Ztext   &   r   ri   ZRpcDefinition.__str__^  s    +//##/KK7<<9I9I JKKK-	 0
 %)IIt~~t{{CHHUYN[99 Ndmm44Dr!   c                    Wn         R # rs   )r<   )rf   r<      &&r   set_typeZRpcDefinition.set_typek  s    	r!   c                s    V P                   e,   \        P                  V P                  4      pW P                    Wn         R # rs   )r   rE   get_interfacer>   )rf   r   interface_dict   && r   set_callbackZRpcDefinition.set_callbackn  s/    ==$/==dnnMN}}- r!   c                sr   V P                   R 8w  d   \        RV P                   ,          4      hV P                  fT   RV P                  ,          p\	        RV P
                  VR4      p\        P                  V P
                  W4       Wn        V# \        P                  V P
                  V P                  4      # )r?   z"%s rpc types do not have callbacksNz%s_default_callbackmethod_return)	r<   
ValueErrorr   r?   r   r>   rE   register_rpc_defrF   )rf   Zcallback_nameZcallback_defr%   r   get_callback_defZRpcDefinition.get_callback_deft  s    99 ADIIMNN== 1DKK?M($..-Y]^L//\)M!--dnndmmLLr!   c                    VeY   \        \        V4      V P                  \        4      V n        ^ pV F%  pV P                  V,          pW4n        V^,          pK'  	  R # R # rs   )rG   r'   rH   r   rA   )rf   Z	arg_namesrB   rP   rQ   s   &&   r   set_positional_argsZ!RpcDefinition.set_positional_args  sV     #1#i.$BVBVX^#_D H%..x8'A & !r!   c                r   rs   )rG   r'   rH   r   rI   )rf   Z	obj_typesrB   rI   rQ   s   &*   r   set_arg_obj_typesZRpcDefinition.set_arg_obj_types  sW     #1#i.$BVBVX^#_D H%..x8#+ A & !r!   c                sV    V P                    Uu. uF  qP                  NK  	  up# u upi rs   )rH   rA   )rf   rQ   r2   r   get_positional_arg_namesZ&RpcDefinition.get_positional_arg_names  s$    ,0,@,@A,@,@AAAs   &)r   r>   r?   rH   r<   N)rz   r{   r|   r}   r`   ri   r   r   r   r   r   r   r   r   r   r   r   r   r   R  s5     ,!	MB Br!   r   c                   r   )InterfaceRegistryi  c                s    / V n         R # rs   
interfacesre   rg   r   r`   ZInterfaceRegistry.__init__  s	    r!   c                s.    \        R VR\        4      pRV/# )error_return_error_return)r   error_positional_args)rf   r>   Zerror_return_defr   r   new_interfaceZInterfaceRegistry.new_interface  s     (OUjk!122r!   c                s    V P                   P                  V4      pVf    V P                  V4      pW P                   V&   V# rs   )r   getr   )rf   interface_namer>   r   r   r   ZInterfaceRegistry.get_interface  s>    OO''7	**>:I.7OON+r!   c                s    ^ RI pVP                  p\        VP                  V4      P                  4      pV^ ,          R8X  d   V^  V P                  W%4      pVP                  V4       VP                  V4       V# )r    Nrf   )inspectrz   r5   Z	signatureZ
parametersrF   r   r   )rf   r<   r>   
method_ptrr   r?   rH   rN      &&&&    r   set_rpc_defZInterfaceRegistry.set_rpc_def  sq    $$w00<GGH1'"""95##O4r!   c                s    V P                  V4      p\        V\        4      '       d   VP                  pVP	                  V4      pVf    \        R WR 4      pV P                  WV4       V# rs   )r   rV   
MethodTyperz   r   r   r   )rf   r>   r?   r   rN      &&&  r   rF   ZInterfaceRegistry.get_rpc_def  s`    ++I6fj))__F $$V,?#D)TBG!!)W=r!   c                st    V P                  V4      p\        V\        4      '       d   VP                  pW4V&   R # rs   )r   rV   r   rz   )rf   r>   r?   rN   r   s   &&&& r   r   Z"InterfaceRegistry.register_rpc_def  s0    ++I6fj))__F!(vr!   c                s6    V P                  V4      pVR ,          # )r   )r   )rf   r>   r   r   r   get_error_rpc_defZ#InterfaceRegistry.get_error_rpc_def  s    ++I6o..r!   c                sr   \        V P                  P                  4       4      pVP                  4        V F}  pV P                  V,          p\	        R V,          4       \        VP                  4       4      pVP                  4        V F&  pW5,          p\	        R\        V4      ,          4       K(  	  K  	  R# )zInterface: %sz    %sN)r5   r   keyssortZprintrU   )rf   Zinterface_namesr   r>   Zmethod_namesZmethod_namer?   s   &      r   dump_interfacesZ!InterfaceRegistry.dump_interfaces  s    t3356-N7I?^35	 01L+"/x#f+-/  , .r!   r   N)rz   r{   r|   r}   r`   r   r   r   rF   r   r   r   r   r   r   r   r   r   r     s2     3
)/
0 
0r!   r   c                    a  V 3R  lpV# )c                 l   <a \         P                  R SV 4      pV P                  oVV3R lpRV n        V# )r?   c                 s   < V P                  4       p\        P                  SS4      p\        W24      pW@P                  V&   V P
                  ! VR V.VO5!   V# )r?   )
new_rpc_idrE   rF   AsyncRpcasync_rpc_cacheemit_rpc)rf   rL   r;   rN   	async_rpcr>   r?   s   &*   r   rpc_funcZ/rpc_method.<locals>.decorator.<locals>.rpc_func  sT    __&F(44YGG 1I+4  (MM&(G;d;r!   TrE   r   rz   _rpc_definitionr   rN   r   r?   r>      &  @r   	decoratorZrpc_method.<locals>.decorator  s6    $009jQ$$	 &*
"r!    r>   r      f r   
rpc_methodr     s     r!   c                 s   a a VV 3R  lpV# )c                 sl   < V P                   p\        P                  SV4      pVP                  ! S!   V # rs   )rz   rE   rF   r   )r   r?   rN   	arg_typesr>      &  r   r   Zrpc_arg_type.<locals>.decorator  s4    $$$00FC!!9-r!   r   )r>   r   r   s   fj r   rpc_arg_typer     s    
 r!   c                 s   a a V V3R  lpV# )c                 s   < \         P                  R SV 4      p\         P                  SS4      pVP                  VP                  4       RV n        V # )r   T)rE   r   rF   r   r?   r   )r   rpc_callback_defrN   r>   r?   r   r   r   Zrpc_callback.<locals>.decorator  sN    -99/9V`a$00FC-445%)
"r!   r   )r>   r?   r   s   ff r   rpc_callbackr     s     r!   c                 r   )c                 r   )signalc                 s   < V P                  4       p\        P                  SS4      pV P                  ! VR V.VO5!   R# )r   N)r   rE   rF   r   )rf   rL   r;   rN   r>   r?   s   &*  r   r   Z/rpc_signal.<locals>.decorator.<locals>.rpc_func  s6    __&F(44YGGMM&(G;d;r!   Tr   r   r   r   r   Zrpc_signal.<locals>.decorator  s6    $009jQ$$	< &*
"r!   r   r   r   r   
rpc_signalr     s    	 r!   c                   sv   a  ] tR tRt o RR]! 4       R3R ltR tR tR tR t	R t
]R	 4       tR
 tR tRtV tR# )r   i  Nc                s    \         P                  V4      V n        W n        W0n        W0n        \        P                  V n        R V n	        W@n
        Ve   V P                  V P                  V4       R # R # rs   )r   r   r   r   portr   r   ZSOCK_STREAMr<   socketfriendly_nameparse)rf   r   r   r   r   r   r   r`   ZSocketAddress.__init__  s[    #..v6 	(&&	*JJt{{G, r!   c                s`   \         P                  ! R R\        V P                  4      4      pV P                  f   R# V P                  \
        P                  J d   RV P                  : RV: 2# V P                  \
        P                  J d#   RV P                  : RV P                  : RV: 2# R# )z^.+ at (0x[0-9A-Fa-f]+)>$z\1Nonez{unix}z socket=z{inet}r   Zunknown)
r   ZsubZreprr   r   r   AF_UNIXr   r   r   )rf   Zsocket_reprr2   r   ri   ZSocketAddress.__str__  sr    ff8%dkkARS;;[[FNN*+/<<EE[[FNN*.2llDII{SSr!   c                s   V P                   f   R# V P                   \        P                  J d   RV P                  ,          # V P                   \        P                  J d   V P                  : RV P
                  : 2# \        R4      # )Nr   z%sr   ZUnknown)r   r   r   r   r   r   Z_re   rg   r   _get_default_friendly_nameZ(SocketAddress._get_default_friendly_name%  s[    ;;[[FNN*4<<(([[FNN*"llDII66Y<r!   c                sV    V P                   f   V P                  4       # V P                   # rs   )r   r   re   rg   r   get_friendly_nameZSocketAddress.get_friendly_name/  s)    %2244!!!r!   c                s,    ^ RI pVP                  V 4      # r_   )copy)rf   r   r2   r   r   ZSocketAddress.copy4  s    yyr!   c                s    V P                   \        P                  J d   V P                  # V P                   \        P                  J d   V P                  V P
                  3# R # rs   )r   r   r   r   r   r   re   rg   r   get_py_addressZSocketAddress.get_py_address8  sB    ;;&..(<<[[FNN*LL$)),,r!   c                s    \        V \        4      '       dD   V P                  4       p R \        P                  R\        P
                  /P                  V 4      p V # V # )ZunixZinet)rV   rU   r   r   r   r   r   )r   rg   r   r   ZSocketAddress.map_family@  sE    fc""\\^FfnnffnnEII&QFMr!   c                s    Wn         V\        P                  J d   W n        R V n        R # V\        P
                  J d   V P                  V4       R # R # rs   )r   r   r   r   r   r   parse_inet_addr)rf   r   addrrt   r   r   ZSocketAddress.parseH  s>    V^^#LDIv~~%  & &r!   c                s   \         P                  ! R V4      pV'       dR   VP                  ^4      pVP                  ^4      pVf   V P                  pVR8X  d   \	        4       pWn        W0n        R# RV n        RV n        R# )z^\s*([^:\s]+)\s*(:\s*([^\s]+))?NZhostname)r   r   r   r   Zget_hostnamer   r   )rf   r   r   r   ro   r   r   ZSocketAddress.parse_inet_addrP  sg    		<dC;;q>D;;q>D|((z!#~LIDLDIr!   )r   r   r   r   r   r   r<   )rz   r{   r|   r}   r$   r`   ri   r   r   r   r   Zstaticmethodr   r   r   r   r   r   r   r   r   r     sT     "D?O?Qae 
-	 "
  ' r!   c                   s   a  ] tR tRt o ]P
                  ]P                  ,          ]P                  ,          ]P                  ,          t	RR]
! 4       3R ltR tR tR tRtV tR# )ConnectionIOid  Nc                sV    \        4       V n        W0n        Wn        W n        R V n        R # rs   )r   connection_stater   channel_typechannel_nameio_watch_id)rf   r   r   r      &&&&r   r`   ZConnectionIO.__init__g  s'     / 1,((r!   c                s    V P                  4        \        P                  ! V P                  P                  \        P
                  V P                  V4      V n        R# )z-callback signature: (io_object, io_condition)N)io_watch_remover   Zio_add_watchr   r   ZPRIORITY_DEFAULTio_input_conditionsr   rf   r   r   r   io_watch_addZConnectionIO.io_watch_addn  sD    ,,T-@-@-G-G-1-B-B-1-E-ExQr!   c                st    V P                   e*   \        P                  ! V P                   4       R V n         R # R # rs   )r   r   Zsource_removere   rg   r   r   ZConnectionIO.io_watch_removeu  s/    't//0#D (r!   c                sr   V\         P                  \         P                  ,          \         P                  ,          ,          '       d   V\         P                  ,          '       d3   \        p\        V4      pV P                  \        P                  ^ W#4       V\         P                  ,          '       d3   \        p\        V4      pV P                  \        P                  ^ W#4       V\         P                  ,          '       d3   \        p\        V4      pV P                  \        P                  ^ W#4       R# R# )r    FT)r   r-   r,   r.   ERR_SOCKET_HUPZget_strerrorclose_connectionr   r)   ZERR_SOCKET_ERRORr[   ZERR_IO_INVALID)rf   r0   errnostrerrorro   r   valid_io_conditionZConnectionIO.valid_io_conditionz  s    4;;4t||CDDdkk))&'.%%o&9&91eNdkk))('.%%o&;&;QPdll**&'.%%o&;&;QPr!   )r   r   r   r   r   )rz   r{   r|   r}   r   r+   r-   r,   r.   r   r   r`   r   r   r   r   r   r   r   r   r   r   d  sM     **t{{2T[[@4<<O$(tMO  Q$
 r!   r   c                   s@   a  ] tR tRt o Rt^tR tR tR tR t	Rt
V tR# )	r   i  Fc                sD    \         P                  V R RVR7       W n        R# )Z	listeningZserver_listeningr   r   r   N)r   r`   client_connection_handler_class)rf   r   r   rt   r   r`   ZListeningServer.__init__  s!    dK]n|}/N,r!   c                s   Wn         V P                   P                  \        P                  8X  d   \        P
                  P                  V P                   P                  4      '       d,   \        P                  ! V P                   P                  4       Md\        P
                  P                  VP                  4      p\        P
                  P                  V4      '       g   \        P                  ! V4       \        P                  ! V P                   P                  V P                   P                  4      V P                   n        \        P                  ! V P                   P                  P                  4       \        P                  \        P                   4       V P"                  '       dD   V P                   P                  P%                  \        P&                  \        P(                  ^4       V P                   P                  P+                  V P                   P-                  4       4       V P                   P                  \        P                  8X  d,   \        P.                  ! V P                   P                  R4       V P                   P                  P1                  V P2                  4       V P                   P                  # )   i  )r   r   r   r   ospathZexistsr   ZremoveZdirnameZmakedirsr   r<   fcntlfilenoF_SETFD
FD_CLOEXECallow_reuse_addressZ
setsockoptZ
SOL_SOCKETZSO_REUSEADDRZbindr   ZchmodZlistenrequest_queue_size)rf   r   r   r   r   new_listening_socketZ$ListeningServer.new_listening_socket  s   ,%%7ww~~d1199::		$--556ww~'='=>ww~~d++KK%%+]]43F3F3M3MtObObOgOg%h"D''..557HXHXY###&&11&2C2CVEXEXZ[\""''(;(;(J(J(LM%%7HHT((00%8""))$*A*AB"")))r!   c           	     sJ    V P                  V P                  4      V P                  n        V P                  V P                  4       R#   \
         dO   pT P                  P                  \        P                  \        P                  R\        T4      4        Rp?R# Rp?ii ; i)r   NFT)r   r   r   r   handle_client_connect	Exceptionr   rj   r   r[   rY   rU   )rf   er2   r   openZListeningServer.open  s    	)-)B)B4CVCV)WD&d889   	!!(()>)>@T@TVXZ]^_Z`a	s   AA	 	B"ABB"c           
     s    V P                  V4      '       g   R # V\        P                  ,          '       d    VP                  4       w  r4\        P                  ! VP                  4       \        P                  \        P                  4       V P                  V P                  4      pVP                  W44       V P                  P                  ^ \        P                  4       R#  R#   \        P                    d   p\#        T4      w  rx\$        P$                  ! \$        P&                  RT P                  : RT: 24       T\(        P*                  8X  d   \        P,                  p	M\        P.                  p	T P                  P                  T	^ Yx4        Rp?R# Rp?ii ; i  \0         d   p\$        P$                  ! \$        P&                  RTP2                  P4                  : R\7        T4      : 24       ^ RIp
\;        T
P=                  4       4       T P                  P                  \        P.                  ^ R\7        T4      4        Rp?R# Rp?ii ; i)Fz.closing client connection due to socket error(): N
exception r4   Tr   )r   r   r+   Zacceptr   r   r   r   r   r   r   r   rj   r   r   r   errorget_error_from_socket_exceptionsyslogLOG_ERRErrnoEPIPEr)   r[   r   	__class__rz   rU   	tracebacksyslog_trace
format_exc)rf   r   r0   Zclient_socketZclient_addressZclient_handlerr   r   r   rw   r   s   &&&        r   r   Z%ListeningServer.handle_client_connect  s   	O**<88djj((P4:MMO1MKK 4 4 6uGWGWX%)%I%I$J]J]%^N"''F))00O4Q4QR" / ).  || P&Ea&HOEMM&..mq  nA  nA  CK  3L  M+$3$7$7	$3$9$9	))00AuOO P  	OMM&..@T@TVYZ[V\*]^--/0!!(()>)>2s1vNN	OsB   F" F" B*C( (F=BFF" FF" "I-BII)r   r   N)rz   r{   r|   r}   r   r   r`   r   r   r   r   r   r   r   r   r   r     s+     O*, r!   c                   s>   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	RequestReceiveri  c                s2    Wn         V P                  4        R # rs   )dispatchFuncreset)rf   r  r   r   r`   ZRequestReceiver.__init__  s    (

r!   c                sL    RV n         ^ V n        RV n        RV n        RV n        R# )r   Nrp   r   )	headerLenbodyLenheaderr6   feed_bufre   rg   r   r  ZRequestReceiver.reset  s%    	r!   c                sz   \        V P                  4      ^ 8X  d   R#  V P                  ^ 8  dQ   \        P	                  V P                  4      pV'       d(   VP                  4       V n        V P                  4        K`  R# \        V P                  4      V P                  V P                  ,           8  d   V P                  pV P                  V P                  ,           pV P                  W# V n        V P                  VR V n        RV n        RV n        V P                  V P                  V P                  4       EK  R# )r    Nr   )r'   r  r  header_end_rer   endparse_headerr  r6   r  r  )rf   r   Z	bodyBeginZbodyEndr   r   processZRequestReceiver.process  s    t}}"~~!%,,T]];%*YY[DN%%' 4==!T^^dll%BB NN	..4<<7 MM)<	 $gh 7!#!!!$++tyy9 r!   c                sX    V ;P                   V,          un         V P                  4        R # rs   )r  r  )rf   datar   r   feedZRequestReceiver.feed  s    r!   c                sp   / V n         ^ p \        P                  V P                  WP                  ^,           4      pV'       dQ   VP                  ^4      pVP                  ^4      P                  4       pW@P                   V&   VP                  4       pK   \        T P                   R,          4      T n	        R# )r    zcontent-lengthN)
r  header_field_rer   r  r  r   Zstripr
  r"   r  )rf   Zbeginr   r8   r9   s   &    r   r  ZRequestReceiver.parse_header
  s    #**4==%RSASTEkk!nA,,.#(C 		4;;'789r!   )r6   r  r  r  r  r  N)rz   r{   r|   r}   r`   r  r  r  r  r   r   r   r   r   r  r    s#     <: :r!   r  c                   sJ   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )r	   i  c                s0    / V n         / V n        ^ V n        R# r_   r   rpc_handlersr;   re   rg   r   r`   ZRpcManage.__init__  s    !r!   c                s^    V ;P                   ^,          un         \        V P                   4      # )r   )r;   rU   re   rg   r   r   ZRpcManage.new_rpc_id"  s    q4;;r!   c                s&   \        R \        V P                  4      V P                  3,          4       \	        V P                  P                  4       4      pVP                  4        V F&  p\        V: RV P                  V,          : 24       K(  	  R# )z*async_rpc_cache: %d entries, cur rpc_id=%sr4   N)r   r'   r   r;   r5   r   r   )rf   Zrpc_idsr;   r%   r   dump_async_rpc_cacheZRpcManage.dump_async_rpc_cache&  sk    >#dFZFZB[]a]h]hAiijt++0023F&$*>*>v*FGH r!   c                :    V P                   P                  4        R # rs   )r   rl   re   rg   r   flush_async_rpc_cacheZRpcManage.flush_async_rpc_cache-  s    ""$r!   c                sb    \         P                   ! \         P                  R WV3,          4       R# )z
[%s] %d %sN)r   r   )rf   r?   r   r   r   r   default_errbackZRpcManage.default_errback0  s    fnnlf5P&PQr!   c                s   Vf3   \         P                   ! \         P                  R\        ,          4       R # VP                  R8X  d&   VP                   F  pV! VP
                  !   K  	  R # VP                  R8X  d\   \        VP                  4      ^ 8  d&   VP                   F  pV! VP
                  !   K  	  R # V P                  ! VP
                  !   R # R # )Nz8process_async_return(): rpc_id=%s not in async_rpc_cacher   r   )	r   r   r;   return_type	callbacksreturn_argsr'   errbacksr  )rf   r   r   r   r   process_async_returnZRpcManage.process_async_return3  s    MM&..*dgm*mn  O3%//)//0 0""n49%%&* ) 2 2Hi334 !3 $$i&;&;< 5r!   c                s"    W P                   V&   R # rs   )r  )rf   r>   Zhandlerrt   r   connect_rpc_interfaceZRpcManage.connect_rpc_interfaceA  s    '.)$r!   r  N)rz   r{   r|   r}   r`   r   r  r  r  r  r  r   r   r   r   r   r	   r	     s/     
 I%R=/ /r!   c                   s   a  ] tR tRt o ]! RR]4      t]! RR]4      tRR ltR t	R t
R	 tR
 tR tRR ltR tR tR tR tR tR tRtV tR# )r
   iG  r   Zbuf_sizetimeoutNc                s    \         P                  WVR R7       \        P                  V 4       \        P                  ! 4       V n        \        V P                  4      V n        R # )Nr   )	r   r`   r	   	threadingZLock
write_lockr  default_request_handlerreceiver)rf   r   r   rt   r   r`   ZRpcChannel.__init__K  sF    dLimn4 #..*'(D(DEr!   c                sZ    R V P                   : RV P                  : RV P                  : 2# )zchannel: name=z addr= type=)r   r   r   re   rg   r   ri   ZRpcChannel.__str__Q  s"    595F5FH[H[]a]n]noor!   c                r  rs   )r  Zacquirere   rg   r   acquire_write_lockZRpcChannel.acquire_write_lockT      !r!   c                r  rs   )r  Zreleasere   rg   r   release_write_lockZRpcChannel.release_write_lockW  r#  r!   c                r   rs   r   )rf   r   r   r   set_channel_typeZRpcChannel.set_channel_typeZ  s    (r!   c                s    V P                   # rs   r%  re   rg   r   get_channel_typeZRpcChannel.get_channel_type]  s       r!   c                s|   \        R V P                  ,          4       V P                  4        V P                  P                  f   R# V P                  P                  ej    V P                  P                  P	                  \
        P                  4       V P                  P                  P                  4        RV P                  n        V P                  P                  W\        P                  ,          W44       V P                  4        R#   \
        P                   d   pRT P                  n         Rp?LnRp?ii ; i)zclose_connection: %sN)r   r   r  r   Zshutdownr   Z	SHUT_RDWRZcloser   r   rj   r   r~   r   )rf   rw   rx   rb   rc   r   s   &&&&& r   r   ZRpcChannel.close_connection`  s    (D,?,?@A""$%%-%%12##**33F4D4DE##**002-1##* 	$$Y?Y?Y0Y%0	> << 2-1##**2s    A(D D; D66D;c                sb    V P                   P                  VR 4      pVf   R # \        W2R 4      pV# rs   )r  r   Zgetattr)rf   r>   r?   Zhandler_objr   r   r   get_method_implementationZ$RpcChannel.get_method_implementationq  s5    ''++It<[$7
r!   c                s   \        VP                  4      \        V4      8w  d:   \        P                  ! \        P                  R \        V4      : RV: R24       R# \	        W.VO5!  p\        WV4      pV P                  V4       R# )zemit_rpc() arg length=z does not match rpc_def(r   N)r'   rH   r   r   rW   r=   	send_data)rf   r;   r<   rN   rL   Zrpc_xmlZrpc_datas   &&&&*  r   r   ZRpcChannel.emit_rpcx  sb    w&&'3t94MM&..cfgkclnu*vw$V<t<vW5x r!   c                s   V P                   P                  \        P                  ,          '       g   R # V P	                  4         ^ pV\        V4      8  d}   V P                  P                  P                  \        WR  R4      4      pV^ 8X  d;   V P                  \        P                  4       \        \        V P                   R7      hW#,           pK   T P                   P'                  ^ \        P4                  4       T P%                  4        R #   \        P                   d{   p\         P                   ! \         P"                  RT P                  ,          4       T P%                  4        T P                   P'                  \        P(                  4        R p?R # R p?i\        P*                   d   p\-        T4      w  rV\         P                   ! \         P"                  RT P                  : RT: 24       T P%                  4        T\.        P0                  8X  d   \        P                  pM\        P2                  pT P                  T^ YV4        R p?R # R p?ii ; i)NzUTF-8)Zdetailzsocket timeout: (%s)zcould not send data on socket (r   )r   ra   r   rY   r"  r'   r   r   ZsendZbytesr   r)   ProgramErrorr   r   r  r   r   r$  rj   r\   r   r   r   r   r[   r   )rf   r  Z	totalSentZsentr   r   r   rw   s   &&      r   r)  ZRpcChannel.send_data  s   %%++o.B.BBB!	Ic$i'**1166uT*=Mw7WX19))/*=*=>&~d>S>STT%,	 (* 	$$Q(E(EF!! ~~ 	MM&..*@DDWDW*XY##%!!(()@)@A|| 		=a@OEMM&..VZViViks*tu##%#+//	+11	!!)Q@		s-   BD I%A/FI1I2BIIc           
     sr    V P                  V4      '       g   R # V\        P                  ,          '       d    VP                  V P                  4      pVP                  R4      p\        V4      ^ 8X  d"   V P                  \        P                  4       R #  T P&                  P)                  ^ \        P*                  4       T P,                  P/                  T4       R#   \        P                   d   p\        T4      w  rV\        P                  ! \        P                  RT P                  : RT: 24       T\         P"                  8X  d   \        P                  pM\        P$                  pT P                  T^ YV4        Rp?R # Rp?ii ; i  \0         d   p\        P                  ! \        P                  RTP2                  P4                  : R\7        T4      : 24       ^ RIp\;        TP=                  4       4       T P                  \        P$                  ^ R\7        T4      4        Rp?R # Rp?ii ; i)	Fzutf-8zsocket error (r   Nr   r4   Tr   )r   r   r+   Zrecvsocket_buf_sizeZdecoder'   r   r   r)   r   r   r   r   r   r   r   r   r[   r   rj   r   r   r  r   r   rz   rU   r   r   r  )	rf   r   r0   r  r   r   r   rw   r   s	   &&&      r   handle_client_ioZRpcChannel.handle_client_io  s   	**<88djj((!!;;t';';<D;;w/D4yA~--o.A.AB$ & %%,,Q0M0MN""4( ' || !&Ea&HOEMM&..TM`M`bj2kl+$3$7$7	$3$9$9	)))QH !  	MM&..@T@TVYZ[V\*]^--/0!!/"7"7BAG	sI   F F AC AF F3BF F FF H6BH11H6c                s   V P                   P                  VR 4      pVf/   \        P                  ! \        P                  RV,          4       R # \	        V P
                  P                  : RV: RV: RVP                  P                  : RVP                  P                  : RV: R24       \        V4      w  rVpWn        Wtn        V P                  V4       R # )Nz1handle_return(): rpc_id=%s not in async_rpc_cachez.handle_return: rpc_id=r!  Z Z.z, {})r   Zpopr   r   r   r   rz   rN   r>   r?   rS   r  r  r  )rf   r<   r;   r6   r   r>   r?   rL   r   r   handle_returnZRpcChannel.handle_return  s    ((,,VT:	MM&..*]`f*fgt~~G^G^`fhlnwnn  oJ  oJ  LU  L]  L]  Ld  Ld  fj  k  	l"9$"?	4 $ $!!),r!   c           
     s   VP                  R ^ 4      pVP                  RR4      p\        V P                  P                  : RV: RV: RV: R24       VR8X  g   VR8X  d   V P	                  WCV4       R# VR	8X  d   \        V4      w  rVpV P                  WV4      pV'       dK    V! V!  p	V	f   . p	\        P                  WV4      p
V
P                  4       pV P                  ! VRV.V	O5!   R# \        P                   pR
V: RV P                  P                  : R2p\        P                  V4      pV P                  VRWW4       R# VR8X  d   \        V4      w  rVpV P                  WV4      pV'       d
    V! V!   R# \        P                   pR
V: RV P                  P                  : R2p\        P                  V4      pV P                  VRWW4       R# \#        RV: RX: RX: 24      h  \         dJ   p\        P                  T4      pT P                  TRYTP                  TP                  4        Rp?R# Rp?ii ; i  \         d!   p\        P                  T4      p Rp?R# Rp?ii ; i)r;   r<   Nz!.default_request_handler: rpc_id=r!  z {r-  r   r   r?   zmethod 'z' is not implemented in class 'Z'r   zunknown type(z) for r   )r   r   r   rz   r.  rS   r(  rE   rF   r   r   r*  r   r   r   r   ZENOSYSr   )rf   r  r6   r;   r<   r>   r?   rL   r   r  Zrpc_method_defr   r   Zrpc_error_defr   r   s   &&&             r   r  Z"RpcChannel.default_request_handler  s   Ha(zz&$'$..JaJacikoquvw>!T_%<tT2X&=d&C#It77	JJ	f",d"3K"*&(%7%C%CI%VN'5'F'F'H$MM&/;KZkZ
 !<<LRTXTbTbTkTkl 2 D DY OfnmX_X&=d&C#It77	JJT% !<<LRTXTbTbTkTkl 2 D DY OfnmX_T9fUVV- $ f$6$H$H$SMMM&.-QRQXQXZ[ZdZdeef $ T$6$H$H$SMTs1   %AG0 7I 0I;>H??II2I--I2)r   r   r  r   ry   )rz   r{   r|   r}   r   r"   r+  Zsocket_timeoutr`   ri   r"  r$  r&  r'  r   r(  r   r)  r,  r.  r  r   r   r   r   r   r
   r
   G  sl      :s;O)S9NFp"")!"!"< D-)W )Wr!   c                   s2   a  ] tR tRt o R tR tR tRtV tR# )r   i  c                sV    Wn         W n        R V n        R V n        . V n        . V n        R # rs   )rN   r;   r  r  r  r  )rf   rN   r;   rt   r   r`   ZAsyncRpc.__init__  s*    r!   c                <    V P                   P                  V4       R # rs   )r  r   r   r   r   add_callbackZAsyncRpc.add_callback  s    h'r!   c                r/  rs   )r  r   )rf   Zerrbackr   r   add_errbackZAsyncRpc.add_errback  s    W%r!   )r  r  r  r  rN   r;   N)	rz   r{   r|   r}   r`   r0  r1  r   r   r   r   r   r   r     s     (& &r!   r   )r   r   r   r   rE   r    r$   r&   r(   r   r	   r
   r   r   rs   )<Z
__future__r   r   rD   r   r   r   r   Zgi.repositoryr   r   r   r   r   r   r  ZtypesZsetroubleshoot.configr   Zsetroubleshoot.errcodeZsetroubleshoot.xml_serializer   r   Zsetroubleshoot.utilZ__all__r   Zcontent_length_rer	  r  r   r    r$   r&   r(   r3   r:   r=   rS   rW   r   Ztype_registerZobjectr   rU   r"   r   r   r   rE   r   r   r   r   r   r   r   r  r	   r
   r   r   r!   r   <module>r2     s   & %(  	   ' 	     , $ [ !* JJ67 

:&**899o6
>
8&
&#R$ROIgoo OIb   o &
3V 3   #.z30GPY[^I_` 
@BF @BJ:0 :0x '( 
" SF Sp)6 )\Dl DR;: ;:@'/ '/XoWy oWh&v &r!   