%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3.9/site-packages/setroubleshoot/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3.9/site-packages/setroubleshoot/__pycache__/rpc.cpython-39.pyc

a

���h��@s ddlmZddlmZddlZddlZddlZddlZddlZddl	m
Z
mZddlZddl
ZddlZddlZddlTddlmZddlTddlmZmZddlTgd�Ze�d	�Ze�d
�Ze�d�Zedd
�ZdAdd�Zdd�Z dd�Z!dd�Z"dd�Z#dd�Z$dd�Z%dd�Z&dd�Z'Gd d!�d!e
j
�Z(e
�)e(�Gd"d#�d#e*�Z+e+d$e,�e+d%e-�e+d&e,�gZ.Gd'd(�d(e*�Z/Gd)d*�d*e*�Z0e0�Z1d+d,�Z2d-d.�Z3d/d0�Z4d1d2�Z5Gd3d4�d4e*�Z6Gd5d6�d6e*�Z7Gd7d8�d8e7�Z8Gd9d:�d:�Z9Gd;d<�d<e*�Z:Gd=d>�d>e7e:�Z;Gd?d@�d@e*�Z<dS)B�)�absolute_import)�print_functionN)�GObject�GLib)�*)�
get_config)�xml_child_elements�xml_get_child_elements_by_name)�
rpc_method�rpc_arg_type�rpc_callback�
rpc_signal�interface_registry�parse_socket_address_list�get_default_port�get_socket_list_from_config�get_local_server_socket_address�ConnectionState�	RpcManage�
RpcChannel�ListeningServer�
SocketAddresszcontent-length:(\d+)z

z([a-zA-Z0-9_-]+):(.*)
Zgeneral�
i18n_encodingcCs�g}t�d�}td|�|s"|St�d|�}|D]v}|s<q2|�|�}|r�|�d���}|�d�}t�|�}	|	dur�td||f�q2n
t	j
}	|}t|	||�}
|�|
�q2td||
f�|S)Nz\s*{(unix|inet)}(.+)z%parse_socket_address_list: input='%s'z[\s,]+��z(unknown socket family - %s in address %sz$parse_socket_address_list: %s --> %s)�re�compile�	log_debug�split�search�group�lowerr�
map_family�Socket�AF_INET�append)�addr_string�default_port�socket_addressesZ	family_re�addrsZcfg_addr�matchZ
family_tag�address�family�socket_address�r.�6/usr/lib/python3.9/site-packages/setroubleshoot/rpc.pyrEs.



rcCstddt�}|S)NZ
connectionr')r�int)r'r.r.r/rdsrcCst|d�}t|�}|S)NZaddress_list)rr)Zcfg_sectionr&r(r.r.r/ris
rcCs td�}t|�dkrdS|dS)NZclient_connect_tor)r�len)Z	addr_listr.r.r/rosrcCs�g}|tj@r|�d�|tj@r,|�d�|tj@r@|�d�|tj@rT|�d�|tj@rh|�d�|tj@r||�d�d|d�|�fS)	N�INZOUTZPRIZERR�HUPZNVALz(%d)[%s]�,)	r�IO_INr%ZIO_OUTZIO_PRI�IO_ERR�IO_HUP�IO_NVAL�join)�io_condition�namesr.r.r/�io_condition_to_stringvs











r<cKs>dt|�}t|���D]\}}|d||f7}q|d7}|S)Nzcontent-length: %d
z%s: %s
z
)r1�list�items)�body�kwds�hdr�key�valuer.r.r/�
rpc_header�s
rDcCst|||d�}||S)N)�rpc_id�type)rD)rErFr?rAr.r.r/�rpc_message�srGc
Cs�d}}}}z�t�|�}|��}|�d�}|�d�}t�||�}t|d�}tt|��}|D]n}|�d�}|�d�}	t	|�d��}
|j
|
}|jdur�|	dkr�|j||d�}q�|�|j�}n|j}|||
<q^W|dur�|�
�n|dur�|�
�0|||fS)	N�	interface�method�arg�namerF�position�xml)Zobj_name)�libxml2ZparseDocZgetRootElementZpropr�get_rpc_defr	�preextend_listr1r0�positional_args�obj_typeZcontent�freeDoc)
�cmdrHrI�args�doc�rpc_defZ	arg_nodes�arg_node�arg_nameZarg_typeZarg_position�rpc_arg�	arg_valuer.r.r/�convert_rpc_xml_to_args�s2


	





�
r\c
GsXd}}�z4|j}|j}t�d�}t�d�}|�d|�|�d|�|�|�d}|jD]�}	|	j}
||}t�d�}|�	|�|�d|
�|�dt
|��t|tj�r�|�d	d
�|�	|�nDt
|d�r�|�d	d
�|�	|�||
��n|�d	d�|�t
|��|d
7}qX|�dt
|��|jtd
d�}W|du�rT|��n|du�rR|��0|S)Nz1.0rTrHrIrrJrKrLrFrM�
get_xml_nodes�stringr�	arg_count)�encoding�format)rHrIrNZnewDocZnewNodeZsetPropZsetRootElementrQrKZaddChild�str�
isinstanceZxmlNode�hasattrr]Z
addContentZ	serializerrS)
rErWrUZtext_docrVrHrI�rootrLrZrYr[rXr.r.r/�convert_rpc_to_xml�sB









�

rfc@s�eZdZdZdZdZdZdZdZdZ	eeBeBeBeBeBe	BZ
eeBZeeBeBe	BZeded	ed
ededed
e	diZ
eeeeeee	gZdejjdejejejffiZdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd#d!d"�ZdS)$rr���� �@��
CONNECTING�OPEN�
AUTHENTICATEDr3�ERROR�TIMEOUT�RETRY�changedNcCs*tj�|�d|_d|_d|_|��dS�Nr)r�__init__�flags�result_code�
result_msg�clear_result��selfr.r.r/rus
zConnectionState.__init__cCsd|�|j�|j|jfS)Nz'flags=%s, result_code=%d, result_msg=%s)�flags_to_stringrvrwrxrzr.r.r/�__str__
s�zConnectionState.__str__cCs|�d|j�dSrt)�update�	ALL_FLAGSrzr.r.r/�clearszConnectionState.clearcCs>|durd}g}tjD]}||@r|�tj|�qd�|�S)Nrr4)r�connection_statesr%�map_connection_enum_to_stringr9)r{�valr;�stater.r.r/r|s
zConnectionState.flags_to_stringcCsd|_d|_dS)Nr��rwrxrzr.r.r/ryszConnectionState.clear_resultcCs||_||_dS�Nr�)r{rwrxr.r.r/�
set_result!szConnectionState.set_resultcCs|j|jfSr�r�rzr.r.r/�
get_result%szConnectionState.get_resultrr�c	Csf|j}|j|O_|j|M_||_||_||jA}|j|@}||@}|rb|�d|j||�dS)Nrs)rvrwrx�emit)	r{�	add_flags�remove_flagsrwrxZprevious_flags�
differenceZflags_addedZ
flags_removedr.r.r/r~(s

zConnectionState.update)rrrr�)�__name__�
__module__�__qualname__rmrnror3rprqrrr�
GOOD_FLAGS�
PROBLEM_FLAGSr�r�rZSignalFlagsZRUN_LASTZTYPE_INTZ__gsignals__rur}r�r|ryr�r�r~r.r.r.r/r�s<�
�	rc@seZdZddd�Zdd�ZdS)�RpcArgNcCs||_||_dSr��rKrR)r{rKrRr.r.r/ru@szRpcArg.__init__cCs6|jdurd}n|j}|jdur$|Sd||jfSdS)NZname_undefined�%s:%sr�)r{rKr.r.r/r}Ds

zRpcArg.__str__)NN)r�r�r�rur}r.r.r.r/r�>s
r�rI�err_code�err_msgc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�
RpcDefinitioncCs2||_||_||_d|_|dur(g|_n||_dSr�)rFrHrI�callbackrQ)r{rFrHrIZrpc_argsr.r.r/ruUszRpcDefinition.__init__cCs�g}|jdurH|jD]2}|jdur:|�d|j|jf�q|�|j�qd|j|j|jd�|�f}|jdkr||d|j7}|S)Nr�z[%s] %s:%s (%s)r4rIz callback=%s)	rQrRr%rKrFrHrIr9r�)r{rUrZ�textr.r.r/r}_s



zRpcDefinition.__str__cCs
||_dSr�)rF)r{rFr.r.r/�set_typelszRpcDefinition.set_typecCs(|jdurt�|j�}||j=||_dSr�)r�r�
get_interfacerH)r{r��interface_dictr.r.r/�set_callbackos
zRpcDefinition.set_callbackcCsf|jdkrtd|j��|jdurVd|j}td|j|d�}t�|j||�||_|St�|j|j�S)NrIz"%s rpc types do not have callbacksz%s_default_callback�
method_return)	rF�
ValueErrorr�rIr�rHr�register_rpc_defrO)r{Z
callback_nameZcallback_defr.r.r/�get_callback_defus


zRpcDefinition.get_callback_defcCsF|durBtt|�|jt�|_d}|D]}|j|}||_|d7}q$dS�Nrr)rPr1rQr�rK)r{�	arg_namesrLrYrZr.r.r/�set_positional_args�s
z!RpcDefinition.set_positional_argscGsF|durBtt|�|jt�|_d}|D]}|j|}||_|d7}q$dSr�)rPr1rQr�rR)r{Z	obj_typesrLrRrZr.r.r/�set_arg_obj_types�s
zRpcDefinition.set_arg_obj_typescCsdd�|jD�S)NcSsg|]
}|j�qSr.)rK)�.0rZr.r.r/�
<listcomp>��z:RpcDefinition.get_positional_arg_names.<locals>.<listcomp>)rQrzr.r.r/�get_positional_arg_names�sz&RpcDefinition.get_positional_arg_namesN)r�r�r�rur}r�r�r�r�r�r�r.r.r.r/r�Ss

		r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�InterfaceRegistrycCs
i|_dSr�)�
interfacesrzr.r.r/ru�szInterfaceRegistry.__init__cCstd|dt�}d|iS)N�error_return�
_error_return)r��error_positional_args)r{rHZerror_return_defr.r.r/�
new_interface�szInterfaceRegistry.new_interfacecCs,|j�|�}|dur(|�|�}||j|<|Sr�)r��getr�)r{�interface_namerHr.r.r/r��s


zInterfaceRegistry.get_interfacecCsTddl}|j}t|�|�j�}|ddkr0|d=|�||�}|�|�|�|�|S)Nrr{)�inspectr�r=Z	signature�
parametersrOr�r�)r{rFrH�
method_ptrr�rIrQrWr.r.r/�set_rpc_def�s

zInterfaceRegistry.set_rpc_defcCsL|�|�}t|t�r|j}|�|�}|durHtd||d�}|�|||�|Sr�)r�rc�
MethodTyper�r�r�r�)r{rHrIr�rWr.r.r/rO�s


zInterfaceRegistry.get_rpc_defcCs&|�|�}t|t�r|j}|||<dSr�)r�rcr�r�)r{rHrIrWr�r.r.r/r��s

z"InterfaceRegistry.register_rpc_defcCs|�|�}|dS)Nr�)r�)r{rHr�r.r.r/�get_error_rpc_def�s
z#InterfaceRegistry.get_error_rpc_defcCspt|j���}|��|D]P}|j|}td|�t|���}|��|D]}||}tdt|��qLqdS)Nz
Interface: %sz    %s)r=r��keys�sort�printrb)r{Zinterface_namesr�rHZmethod_namesZmethod_namerIr.r.r/�dump_interfaces�s
z!InterfaceRegistry.dump_interfacesN)r�r�r�rur�r�r�rOr�r�r�r.r.r.r/r��s
r�cs�fdd�}|S)Ncs,t�d�|�}|j���fdd�}d|_|S)NrIcsB|��}t����}t||�}||j|<|j|d|g|�R�|S)NrI)�
new_rpc_idrrO�AsyncRpc�async_rpc_cache�emit_rpc)r{rUrErW�	async_rpc�rHrIr.r/�rpc_func�s

z/rpc_method.<locals>.decorator.<locals>.rpc_funcT�rr�r��_rpc_definition�r�rWr��rH�rIr/�	decorator�s
zrpc_method.<locals>.decoratorr.�rHr�r.r�r/r
�s
r
cs��fdd�}|S)Ncs |j}t��|�}|j��|Sr�)r�rrOr�)r�rIrW��	arg_typesrHr.r/r��s
zrpc_arg_type.<locals>.decoratorr.)rHr�r�r.r�r/r�srcs��fdd�}|S)Ncs0t�d�|�}t����}|�|j�d|_|S)Nr�T)rr�rOr�rIr�)r��rpc_callback_defrWr�r.r/r��s
zrpc_callback.<locals>.decoratorr.)rHrIr�r.r�r/r�srcs�fdd�}|S)Ncs,t�d�|�}|j���fdd�}d|_|S)N�signalcs.|��}t����}|j|d|g|�R�dS)Nr�)r�rrOr�)r{rUrErWr�r.r/r�sz/rpc_signal.<locals>.decorator.<locals>.rpc_funcTr�r�r�r�r/r��s
zrpc_signal.<locals>.decoratorr.r�r.r�r/r
�s
r
c@sdeZdZdde�dfdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	e
dd��Zdd�Zdd�Z
dS)rNcCsLt�|�|_||_||_||_tj|_d|_	||_
|durH|�|j|�dSr�)rr"r,r+�portr'r#ZSOCK_STREAMrF�socket�
friendly_name�parse)r{r,r+r'r�r.r.r/ruszSocketAddress.__init__cCsbt�ddt|j��}|jdur"dS|jtjur<d|j|fS|jtjurZd|j|j	|fSdSdS)Nz^.+ at (0x[0-9A-Fa-f]+)>$z\1�Nonez{unix}%s socket=%sz{inet}%s:%s socket=%s�unknown)
r�sub�reprr�r,r#�AF_UNIXr+r$r�)r{Zsocket_reprr.r.r/r}s
zSocketAddress.__str__cCsL|jdurdS|jtjur$d|jS|jtjur@d|j|jfStd�SdS)Nr�z%sr�ZUnknown)r,r#r�r+r$r��_rzr.r.r/�_get_default_friendly_name&s

z(SocketAddress._get_default_friendly_namecCs|jdur|��S|jSr�)r�r�rzr.r.r/�get_friendly_name0s
zSocketAddress.get_friendly_namecCsddl}|�|�Srt)�copy)r{r�r.r.r/r�5szSocketAddress.copycCs2|jtjur|jS|jtjur*|j|jfSdSdSr�)r,r#r�r+r$r�rzr.r.r/�get_py_address9s
zSocketAddress.get_py_addresscCs0t|tj�r,|��}tjtjd��|�}|S|S)N)ZunixZinet)rc�sixZstring_typesr!r#r�r$r�)r,r.r.r/r"As
zSocketAddress.map_familycCs6||_|tjur||_d|_n|tjur2|�|�dSr�)r,r#r�r+r�r$�parse_inet_addr)r{r,�addrr.r.r/r�Is

zSocketAddress.parsecCs^t�d|�}|rN|�d�}|�d�}|dur2|j}|dkr@t�}||_||_nd|_d|_dS)Nz^\s*([^:\s]+)\s*(:\s*([^\s]+))?r��hostname)rrr r'Zget_hostnamer+r�)r{r�r*r�r.r.r/r�Qs

zSocketAddress.parse_inet_addr)r�r�r�rrur}r�r�r�r��staticmethodr"r�r�r.r.r.r/r
s

rc@sNeZdZejejBejBejBZdde	�fdd�Z
dd�Zdd�Zdd	�Z
dS)
�ConnectionIONcCs$t�|_||_||_||_d|_dSr�)r�connection_stater-�channel_type�channel_name�io_watch_id)r{r�r�r-r.r.r/ruhs
zConnectionIO.__init__cCs&|��t�|jjtj|j|�|_dS)z-callback signature: (io_object, io_condition)N)�io_watch_removerZio_add_watchr-r�ZPRIORITY_DEFAULT�io_input_conditionsr��r{r�r.r.r/�io_watch_addos

�zConnectionIO.io_watch_addcCs |jdurt�|j�d|_dSr�)r�rZ
source_removerzr.r.r/r�vs
zConnectionIO.io_watch_removecCs�|tjtjBtjB@r�|tj@r>t}t|�}|�tjd||�|tj@rft	}t|�}|�tj
d||�|tj@r�t}t|�}|�tj
d||�dSdSdS)NrFT)rr7r6r8�ERR_SOCKET_HUPZget_strerror�close_connectionrr3ZERR_SOCKET_ERRORrpZERR_IO_INVALID)r{r:�errno�strerrorr.r.r/�valid_io_condition{s


zConnectionIO.valid_io_condition)r�r�r�rr5r7r6r8r�rrur�r�r�r.r.r.r/r�es
r�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)rF�cCstj|dd|d�||_dS)NZ	listeningZserver_listening�r�r�r-)r�ru�client_connection_handler_class)r{r-r�r.r.r/ru�szListeningServer.__init__cCs�||_|jjtjkrXtj�|jj�r4t�|jj�n$tj�	|j�}tj�|�sXt�
|�t�|jj|jj�|j_t
�
|jj��t
jt
j�|jr�|jj�tjtjd�|jj�|j���|jjtjkr�t�|jjd�|jj�|j�|jjS)Nri�)r-r,r#r��os�path�existsr+�remove�dirname�makedirsr�rF�fcntl�fileno�F_SETFD�
FD_CLOEXEC�allow_reuse_addressZ
setsockoptZ
SOL_SOCKETZSO_REUSEADDRZbindr��chmodZlisten�request_queue_size)r{r-r�r.r.r/�new_listening_socket�s 
z$ListeningServer.new_listening_socketc
Csfz |�|j�|j_|�|j�Wn@ty`}z(|j�tj	tj
dt|��WYd}~dSd}~00dS)N���FT)rr-r�r��handle_client_connect�	Exceptionr�r~rrprnrb)r{�er.r.r/�open�szListeningServer.openc
CsXz�|�|�sWdS|tj@r�zN|��\}}t�|��tjtj�|�|j	�}|�
||�|j�dt
j�Wnttjy�}zZt|�\}}t�tjd|j	|f�|tjkr�t
j}	nt
j}	|j�|	d||�WYd}~n
d}~00Wnpt�yR}zVt�tjd|jjt|�f�ddl}
t|
���|j�t
jddt|��WYd}~n
d}~00dS)NFrz5closing client connection due to socket error(%s): %s�exception %s: %srT)r�rr5Zacceptr�r�r�r�r�r-rr�r~rr�r#�error�get_error_from_socket_exception�syslog�LOG_ERR�Errno�EPIPEr3rpr�	__class__r�rb�	traceback�syslog_trace�
format_exc)r{r�r:Z
client_socketZclient_addressZclient_handlerrr�r�r�rr.r.r/r�s.


,.z%ListeningServer.handle_client_connectN)	r�r�r�r�rrurrrr.r.r.r/r�s	rc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�RequestReceivercCs||_|��dSr�)�dispatchFunc�reset)r{rr.r.r/ru�szRequestReceiver.__init__cCs"d|_d|_d|_d|_d|_dS)Nrrr�)�	headerLen�bodyLen�headerr?�feed_bufrzr.r.r/r�s
zRequestReceiver.resetcCs�t|j�dkrdS|jdkrDt�|j�}|r�|��|_|��qnq�t|j�|j|jkr�|j}|j|j}|j||�|_|j|d�|_d|_d|_|�	|j
|j�qq�qdS)Nrr)r1rr�
header_end_rer�end�parse_headerrr?rr)r{r*Z	bodyBeginZbodyEndr.r.r/�process�s&

zRequestReceiver.processcCs|j|7_|��dSr�)rr)r{�datar.r.r/�feedszRequestReceiver.feedcCshi|_d}t�|j||jd�}|rT|�d�}|�d���}||j|<|��}q
qTq
t|jd�|_	dS)Nrrrzcontent-length)
r�header_field_rerrrr �striprr0r)r{Zbeginr*rBrCr.r.r/rs


zRequestReceiver.parse_headerN)r�r�r�rurrrrr.r.r.r/r�s
rc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)rcCsi|_i|_d|_dSrt)r��rpc_handlersrErzr.r.r/ruszRpcManage.__init__cCs|jd7_t|j�S)Nr)rErbrzr.r.r/r�#szRpcManage.new_rpc_idcCsRtdt|j�|jf�t|j���}|��|D]}td||j|f�q2dS)Nz*async_rpc_cache: %d entries, cur rpc_id=%sz%s: %s)rr1r�rEr=r�r�)r{Zrpc_idsrEr.r.r/�dump_async_rpc_cache's
zRpcManage.dump_async_rpc_cachecCs|j��dSr�)r�r�rzr.r.r/�flush_async_rpc_cache.szRpcManage.flush_async_rpc_cachecCst�tjd|||f�dS)Nz
[%s] %d %s)r
r)r{rIr�r�r.r.r/�default_errback1szRpcManage.default_errbackcCs�|durt�tjdt�dS|jdkr@|jD]}||j�q.n<|jdkr|t|j�dkrp|jD]}||j�q^n|j|j�dS)Nz8process_async_return(): rpc_id=%s not in async_rpc_cacher�r�r)	r
rrE�return_type�	callbacks�return_argsr1�errbacksr$)r{r�r�r.r.r/�process_async_return4s



zRpcManage.process_async_returncCs||j|<dSr�)r!)r{rHZhandlerr.r.r/�connect_rpc_interfaceBszRpcManage.connect_rpc_interfaceN)
r�r�r�rur�r"r#r$r)r*r.r.r.r/rsrc@s�eZdZedde�Zedde�Zd!dd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zd"dd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �ZdS)#rr�Zbuf_size�timeoutNcCs6tj|||dd�t�|�t��|_t|j�|_dS)Nr�)	r�rur�	threading�Lock�
write_lockr�default_request_handler�receiver)r{r�r�r.r.r/ruLs

zRpcChannel.__init__cCsd|j|j|jfS)Nz channel: name=%s addr=%s type=%s)r�r-r�rzr.r.r/r}RszRpcChannel.__str__cCs|j��dSr�)r.�acquirerzr.r.r/�acquire_write_lockUszRpcChannel.acquire_write_lockcCs|j��dSr�)r.�releaserzr.r.r/�release_write_lockXszRpcChannel.release_write_lockcCs
||_dSr��r�)r{r�r.r.r/�set_channel_type[szRpcChannel.set_channel_typecCs|jSr�r5rzr.r.r/�get_channel_type^szRpcChannel.get_channel_typerr�c
Cs�td|j�|��|jjdur&dS|jjdur�z(|jj�tj�|jj��d|j_Wn.tjy�}zd|j_WYd}~n
d}~00|j	�
||tjB||�|�
�dS)Nzclose_connection: %s)rr-r#r�Zshutdownr#Z	SHUT_RDWR�closerr�r~rr�r�)r{r�r�rwrxrr.r.r/r�as�zRpcChannel.close_connectioncCs*|j�|d�}|durdSt||d�}|Sr�)r!r��getattr)r{rHrIZhandler_objr�r.r.r/�get_method_implementationrs
z$RpcChannel.get_method_implementationcGs\t|j�t|�kr0t�tjdt|�|f�dSt||g|�R�}t|||�}|�|�dS)Nz3emit_rpc() arg length=%s does not match rpc_def(%s))r1rQr
rrfrG�	send_data)r{rErFrWrUZrpc_xmlZrpc_datar.r.r/r�yszRpcChannel.emit_rpcc
Csd|jjtj@sdS|��z\d}|t|�krt|jj�t	||d�d��}|dkrj|�
tj�tt
|jd��||}q Wn�tjy�}z8t�tjd|j�|��|j�tj�WYd}~dSd}~0tj�yF}zdt|�\}}t�tjd|j|f�|��|tjk�rtj}ntj}|�
|d||�WYd}~dSd}~00|j�dtj�|��dS)NrzUTF-8)Zdetailzsocket timeout: (%s)z&could not send data on socket (%s): %s)r�rvrrnr2r1r-r��send�bytesr�r3�ProgramErrorr�r#r+r
rr4r~rqrr	rr
rpr�)r{rZ	totalSent�sentrr�r�r�r.r.r/r;�s6zRpcChannel.send_datac	
Csbz�|�|�sWdS|tj@r�z:|�|j�}|�d�}t|�dkrT|�tj	�WWdSWnvt
jy�}z\t|�\}}t
�
t
jd|j|f�|tjkr�tj	}ntj}|�|d||�WYd}~WdSd}~00|j�dtj�|j�|�Wnpt�y\}zVt
�
t
jd|jjt|�f�ddl}t|���|�tjddt|��WYd}~dSd}~00dS)NFzutf-8rzsocket error (%s): %srrT)r�rr5Zrecv�socket_buf_size�decoder1r�rr3r#rr	r
rr-rr
rpr�r~r�r0rrrr�rbrrr)	r{r�r:rrr�r�r�rr.r.r/�handle_client_io�s6



zRpcChannel.handle_client_iocCsx|j�|d�}|dur,t�tjd|�dStd|jj|||jj|jj	|f�t
|�\}}}||_||_|�
|�dS)Nz1handle_return(): rpc_id=%s not in async_rpc_cachez/%s.handle_return: rpc_id=%s type=%s %s.%s, {%s})r��popr
rrrr�rWrHrIr\r%r'r))r{rFrEr?r�rHrIrUr.r.r/�
handle_return�s$zRpcChannel.handle_returncCs�|�dd�}|�dd�}td|jj|||f�|dks@|dkrR|�|||��n�|dk�r@t|�\}}}|�||�}|�r
zB||�}	|	dur�g}	t�||�}
|
�	�}|j
|d|g|	�R�WnHt�y}z.t�|�}
|�
|d|
||j
|j�WYd}~n
d}~00n4tj}d||jjf}t�|�}
|�
|d|
|||�n�|d	k�r�t|�\}}}|�||�}|�r�z||�Wn0t�y�}zt�|�}
WYd}~n
d}~00n4tj}d||jjf}t�|�}
|�
|d|
|||�ntd
|||f��dS)NrErrFz2%s.default_request_handler: rpc_id=%s type=%s {%s}r�r�rIz,method '%s' is not implemented in class '%s'r�zunknown type(%s) for %s:%s)r�rrr�rDr\r:rrOr�r�r>r�r�r�rZENOSYSr�)r{rr?rErFrHrIrUr�r'Zrpc_method_defr�rZ
rpc_error_defr�r�r.r.r/r/�sH

0

"
z"RpcChannel.default_request_handler)NN)rrrr�)r�r�r�rr0r@Zsocket_timeoutrur}r2r4r6r7r�r:r�r;rBrDr/r.r.r.r/rHs

"
rc@s$eZdZdd�Zdd�Zdd�ZdS)r�cCs(||_||_d|_d|_g|_g|_dSr�)rWrEr'r%r&r()r{rWrEr.r.r/ru�szAsyncRpc.__init__cCs|j�|�dSr�)r&r%r�r.r.r/�add_callbackszAsyncRpc.add_callbackcCs|j�|�dSr�)r(r%)r{Zerrbackr.r.r/�add_errback	szAsyncRpc.add_errbackN)r�r�r�rurErFr.r.r.r/r��sr�)N)=Z
__future__rrr�rNrr
r�rZ
gi.repositoryrrr�r�r#r�r,�typesZsetroubleshoot.configrZsetroubleshoot.errcodeZsetroubleshoot.xml_serializerr	Zsetroubleshoot.util�__all__rZcontent_length_rerrrrrrrr<rDrGr\rfrZ
type_register�objectr�rbr0r�r�r�rr
rrr
rr�rrrrr�r.r.r.r/�<module>sb




))Q
E<	
X.I@,5

Zerion Mini Shell 1.0