Your IP : 216.73.216.85


Current Path : /opt/alt/python310/lib64/python3.10/idlelib/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/idlelib/__pycache__/rpc.cpython-310.opt-2.pyc

o

0�iZR�@s�	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZdd�Zdd�Zd)dd�ZGdd	�d	ej�Zd
ZdZGdd
�d
e	j�ZiZe�d�Ze�d�ZGdd�d�ZGdd�d�Zdd�ZGdd�d�ZGdd�de	j e�Z!Gdd�de�Z"Gdd�d�Z#dd�Z$dd�Z%Gd d!�d!�Z&d"d#�Z'e(d$kr�dd%l)m*Z*e*d&d'd(�dSdS)*�NcCs	t�|�}|S�N)�marshal�loads)�ms�co�r�2/opt/alt/python310/lib64/python3.10/idlelib/rpc.py�
unpickle_code-s
r	cCs	t�|�}t|ffSr)r�dumpsr	)rrrrr�pickle_code3s

rcCs&	t��}t||�}|�|�|��Sr)�io�BytesIO�CodePickler�dump�getvalue)�objZprotocol�f�prrrr
9s


r
c@seZdZejeiej�ZdS)rN)�__name__�
__module__�__qualname__�types�CodeTyper�copyreg�dispatch_tablerrrrrBsri z	127.0.0.1c@s6eZdZddd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�	RPCServerNcCs |durt}tj�|||�dSr)�
RPCHandler�socketserver�	TCPServer�__init__)�self�addrZhandlerclassrrrrKszRPCServer.__init__cC�	dSrr�r rrr�server_bindP�zRPCServer.server_bindcCs	|j�|j�dSr)�socketZconnect�server_addressr#rrr�server_activateTszRPCServer.server_activatecCs	|j|jfSr)r&r'r#rrr�get_request]�zRPCServer.get_requestcCs�	z�ty
�tj}td|d�td|d�tdt��j|d�td||d�tdt|�|d�tj	|d�td|d�td|d�t
�d	�YdS)
Nz)
----------------------------------------��filezUnhandled server exception!z
Thread: %szClient Address: z	Request: z#
*** Unrecoverable, server exiting!z(----------------------------------------r)�
SystemExit�sys�
__stderr__�print�	threading�current_thread�name�repr�	traceback�	print_exc�os�_exit)r �requestZclient_addressZerfrrr�handle_erroras zRPCServer.handle_errorr)rrrrr$r(r)r:rrrrrIs
	rc@s�eZdZdZd;dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+Zd,ZdZd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z d9d:�Z!dS)<�SocketIOrNcCs@t��|_|dur||_||_|durt}||_i|_i|_dSr)	r1r2�
sockthread�	debugging�sock�objecttable�objtable�	responses�cvars)r r>r@r=rrrr�s

zSocketIO.__init__cCs$|j}d|_|dur|��dSdSr)r>�close)r r>rrrrC�s
�zSocketIO.closecCs	t�d�dS�Nr)r7r8r#rrr�exithook�szSocketIO.exithookcGsN|jsdS|jdtt��j�}|D]
}|dt|�}qt|tjd�dS)N� r+)	r=�location�strr1r2r3r0r.r/)r �args�s�arrr�debug�szSocketIO.debugcCs||j|<dSr)r@)r �oid�objectrrr�register�szSocketIO.registercCs$z|j|=WdStyYdSwr)r@�KeyError�r rMrrr�
unregister�s
�zSocketIO.unregisterc
Cs�|�d|�z
|\}\}}}}Wn
tyYdSw||jvr'dd|ffS|j|}|dkr;i}	t||	�d|	fS|dkrJi}
t||
�d|
fSt||�sVdd|ffSt||�}z1|d	kru||i|��}t|t�rpt	|�}d|fWS|d
kr�t
�||||ff�WdSdd|fWSty��t
y��ty��ty�}
z
d
|
fWYd}
~
Sd}
~
wd}t||||ftjd�tjtjd�YdS)Nz
localcall:)�ERRORzBad request formatrSzUnknown object id: %r�__methods__�OK�__attributes__zUnsupported method name: %r�CALL�QUEUE)�QUEUEDNzUnsupported message type: %s�CALLEXCzU*** Internal Error: rpc.py:SocketIO.localcall()

 Object: %s 
 Method: %s 
 Args: %s
r+)�	EXCEPTIONN)rL�	TypeErrorr@�_getmethods�_getattributes�hasattr�getattr�
isinstance�RemoteObject�	remoteref�
request_queueZputr-�KeyboardInterrupt�OSError�	Exceptionr0r.r/r5r6)r �seqr9�howrM�
methodnamerI�kwargsr�methods�
attributes�methodZretZex�msgrrr�	localcall�sX�







�zSocketIO.localcallcC�(|�d||�|�||||�}|�|�S)Nzremotecall:asynccall: )rL�	asynccall�asyncreturn�r rMrjrIrkrhrrr�
remotecall��
zSocketIO.remotecallcCrq)Nzremotequeue:asyncqueue: )rL�
asyncqueuersrtrrr�remotequeue�rvzSocketIO.remotequeuecC�`d||||ff}|��}t��|jkrt��}||j|<|�d|||||�|�||f�|S)NrWz
asynccall:%d:��newseqr1r2r<Z	ConditionrBrL�
putmessage�r rMrjrIrkr9rh�cvarrrrrr��
zSocketIO.asynccallcCry)NrXzasyncqueue:%d:rzr}rrrrw�rzSocketIO.asyncqueuecCs6|�d|�|j|dd�}|�d||�|�|�S)Nz#asyncreturn:%d:call getresponse(): 皙�����?)�waitzasyncreturn:%d:response: )rL�getresponse�decoderesponse)r rh�responserrrrs�s
zSocketIO.asyncreturncCs�|\}}|dkr
|S|dkrdS|dkr|�d�dS|dkr*|�d�|��dS|dkr8|�d|�t|��|d	krD|�d
|�|�t||��)NrUrYr[zdecoderesponse: EXCEPTION�EOFzdecoderesponse: EOFrSzdecoderesponse: Internal ERROR:rZzdecoderesponse: Call Exception:)rL�decode_interrupthook�RuntimeError�SystemError)r r�ri�whatrrrr��s&


zSocketIO.decoderesponsecCs	t�r)�EOFErrorr#rrrr�r%zSocketIO.decode_interrupthookcCs6	z
|jddd�WdSty|�d�YdSw)Nr�)�myseqr�zmainloop:return)r�r�rLr#rrr�mainloops
�zSocketIO.mainloopcCs6|�||�}|dur|\}}|dkr||�|�f}|S)NrU)�_getresponse�_proxify)r r�r�r�rir�rrrr�"szSocketIO.getresponsecCs4t|t�rt||j�St|t�rtt|j|��S|Sr)ra�RemoteProxy�RPCProxyrM�list�mapr�)r rrrrr�*s


zSocketIO._proxifycCs�|�d|�t��|jur	|�||�}|dur|Sq|j|}|��||jvr2|��||jvs)|j|}|�d||f�|j|=|j|=|�	�|S)Nz_getresponse:myseq:Tz-_getresponse:%s: thread woke up: response: %s)
rLr1r2r<�pollresponserB�acquirerAr��release)r r�r�r�r~rrrr�2s(�


�
�zSocketIO._getresponsecCs|jd|_}|S)N�)�nextseq)r rhrrrr{HszSocketIO.newseqc	Cs�|�d|d�zt|�}Wntjy"tdt|�tjd��wt�	dt
|��|}t
|�dkrgzt�g|jgg�\}}}|j�
|dt��}Wn
ttfyXtd��w||d�}t
|�dks3dSdS)Nzputmessage:%d:rzCannot pickle:r+�<izsocket no longer exists)rLr
�pickleZ
PicklingErrorr0r4r.r/�structZpack�len�selectr>�send�BUFSIZE�AttributeErrorr\rf)r �messagerJ�r�w�x�nrrrr|Ls"���zSocketIO.putmessage��cCs�|��t|j�|jkrHt�|j��ggg|�\}}}t|�dkr#dSz|j�t�}Wn	t	y4t
�wt|�dkr=t
�|j|7_|��|��SrD)�_stage0r��buff�bufneedr�r>�filenoZrecvr�rfr��_stage1)r r�r�r�r�rJrrr�
pollpacket`s�zSocketIO.pollpacketcCsZ|jdkr)t|j�dkr+|jdd�}|jdd�|_t�d|�d|_d|_dSdSdS)Nrr�r��)�bufstater�r�r�Zunpackr�)r rJrrrr�ps
�zSocketIO._stage0cCsT|jdkr&t|j�|jkr(|jd|j�}|j|jd�|_d|_d|_|SdSdS)Nr�r�r)r�r�r�r�)r �packetrrrr�ws�zSocketIO._stage1cCsx|�|�}|durdSzt�|�}W|Stjy;tdtjd�tdt|�tjd�tj	tjd�tdtjd��w)Nz-----------------------r+zcannot unpickle packet:)
r�r�rZUnpicklingErrorr0r.r/r4r5�print_stack)r r�r�r�rrr�pollmessages
��zSocketIO.pollmessagec
CsR		zt�d�}Wn
tjyYnw|\}}|d|ff}|�|�z|�|�}|dur0WdSWnty?|��YdStyHYdSw|\}}|d}|�	d||f�|dvr�|�	d|�|�
||�}|�	d||f�|dkr�|�||f�n|d	kr�	q||kr�|S|j�|d�}	|	dur�|	��||j
|<|	��|	��q)
NTrrUzpollresponse:%d:myseq:%s)rWrXzpollresponse:%d:localcall:call:z%pollresponse:%d:localcall:response:%srWrX)�response_queue�get�queueZEmptyr|r�r��
handle_EOFr�rLrprBr�rA�notifyr�)
r r�r�Zqmsgrhr�r�Zresqri�cvrrrr��sX�

���
zSocketIO.pollresponsecCsX	|��|�d�|jD]}|j|}|��d|j|<|��|��q
|��dS)Nr�)r�N)�EOFhookrLrBr�rAr�r�rE)r �keyr�rrrr��s




zSocketIO.handle_EOFcCr"rrr#rrrr��r%zSocketIO.EOFhook)NN)"rrrr�rrCrErLrOrRrprurxrrrwrsr�r�r�r�r�r�r{r|r�r�r�r�r�r�r�r�r�r�rrrrr;�s@
.


I
r;c@seZdZdS)rbN)rrrrrrrrb�srbcCst|�}|t|<t|�Sr)�idr?r�)rrMrrrrc�srcc@seZdZdd�ZdS)r�cCs
||_dSr)rMrQrrrr��
zRemoteProxy.__init__N)rrrrrrrrr��sr�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
rFz#ScCs(||_t�||�tj�||||�dSr)Zcurrent_handlerr;rr�BaseRequestHandler)r r>r!Zsvrrrrr�szRPCHandler.__init__cCs	|��dSr)r�r#rrr�handler*zRPCHandler.handlecC�
t||�Sr�r�rQrrr�get_remote_proxyr�zRPCHandler.get_remote_proxyN)rrrr=rGrr�r�rrrrr�src@s:eZdZdZdZdZejejfdd�Z	dd�Z
dd	�Zd
S)�	RPCClientFz#Cr�cCs*t�||�|_|j�|�|j�d�dS�Nr�)r&�listening_sockZbindZlisten)r �addressZfamily�typerrrrszRPCClient.__init__cCsT|j��\}}|jrtd|tjd�|dtkr t�||�dStd|tjd�t	�)Nz****** Connection request from r+rz** Invalid host: )
r��acceptr=r0r.r/�	LOCALHOSTr;rrf)r Zworking_sockr�rrrr�szRPCClient.acceptcCr�rr�rQrrrr�"r�zRPCClient.get_remote_proxyN)rrrr=rGr�r&ZAF_INETZSOCK_STREAMrr�r�rrrrr�s
r�c@s4eZdZdZdZdd�Zdd�Zdd�Zdd	�ZdS)
r�NcCs||_||_dSr)�sockiorM)r r�rMrrrr+s
zRPCProxy.__init__cCsl|jdur	|��|j�|�rt|j|j|�S|jdur |��||jvr2|j�|jd|fi�}|St	|��)N�__getattribute__)
�_RPCProxy__methods�_RPCProxy__getmethodsr��MethodProxyr�rM�_RPCProxy__attributes�_RPCProxy__getattributesrur�)r r3�valuerrr�__getattr__/s


�zRPCProxy.__getattr__cC�|j�|jddi�|_dS)NrVr)r�rurMr�r#rrrZ__getattributes=�

�zRPCProxy.__getattributescCr�)NrTr)r�rurMr�r#rrrZ__getmethodsAr�zRPCProxy.__getmethods)	rrrr�r�rr�r�r�rrrrr�&sr�cCsPt|�D]}t||�}t|�rd||<qt|t�r$|jD]	}t||�qdSdSr�)�dirr`�callablerar��	__bases__r])rrlr3�attr�superrrrr]Es
�

�r]cCs,t|�D]}t||�}t|�sd||<qdSr�)r�r`r�)rrmr3r�rrrr^Ps
��r^c@seZdZdd�Zdd�ZdS)r�cCs||_||_||_dSr)r�rMr3)r r�rMr3rrrrYs
zMethodProxy.__init__cOs|j�|j|j||�}|Sr)r�rurMr3)r rIrkr�rrr�__call__^szMethodProxy.__call__N)rrrrr�rrrrr�Wsr�cCs~	|durdSdt_t|�}ztj�|�Wnty3d}|�|d�}|�|d�}tj�|�Ynwtj�d�|t_dS)N�ascii�backslashreplace�strict�
)	�builtins�_r4r.�stdout�write�UnicodeEncodeError�encode�decode)r��text�encoding�bytesrrr�displayhookfs�
r��__main__)�mainzidlelib.idle_test.test_rpcr�)�	verbosityr)+r�rrrr7r�r�r�r&rr�r.r1r5rr	rr
ZPicklerrr�r�rrr?ZQueuerdr�r;rbrcr�r�rr�r�r]r^r�r�rZunittestr�rrrr�<module>sV
	2

k�