Your IP : 216.73.216.213


Current Path : /opt/alt/python39/lib64/python3.9/idlelib/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/idlelib/__pycache__/rpc.cpython-39.opt-2.pyc

a

XC?hTR�@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$k�r�dd%l)m*Z*e*d&d'd(�dS)*�NcCst�|�}|S�N)�marshal�loads)�ms�co�r�0/opt/alt/python39/lib64/python3.9/idlelib/rpc.py�
unpickle_code-s
r	cCst�|�}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 |durt}tj�|||�dSr)�
RPCHandler�socketserver�	TCPServer�__init__)�self�addrZhandlerclassrrrrKszRPCServer.__init__cCsdSrr�r rrr�server_bindPszRPCServer.server_bindcCs|j�|j�dSr)�socketZconnect�server_addressr"rrr�server_activateTszRPCServer.server_activatecCs|j|jfSr)r$r%r"rrr�get_request]szRPCServer.get_requestcCs�z�Wn�ty�Yn�tj}td|d�td|d�tdt��j|d�td||d�tdt|�|d�tj	|d�td|d�td|d�t
�d	�Yn0dS)
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_error)N)rrrrr#r&r'r7rrrrrIs

	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||_||_|dur*t}||_i|_i|_dSr)	r.r/�
sockthread�	debugging�sock�objecttable�objtable�	responses�cvars)r r;r=r:rrrr�s
zSocketIO.__init__cCs |j}d|_|dur|��dSr)r;�close)r r;rrrr@�szSocketIO.closecCst�d�dS�Nr)r4r5r"rrr�exithook�szSocketIO.exithookcGsN|js
dS|jdtt��j�}|D]}|dt|�}q&t|tjd�dS)N� r()	r:�location�strr.r/r0r-r+r,)r �args�s�arrr�debug�szSocketIO.debugcCs||j|<dSr)r=)r �oid�objectrrr�register�szSocketIO.registercCs$z|j|=WntyYn0dSr)r=�KeyError�r rJrrr�
unregister�szSocketIO.unregisterc
Cs�|�d|�z|\}\}}}}Wnty4YdS0||jvrNdd|ffS|j|}|dkrvi}	t||	�d|	fS|dkr�i}
t||
�d|
fSt||�s�dd|ffSt||�}zh|d	kr�||i|��}t|t�r�t	|�}d|fWS|d
k�rt
�||||ff�WdSdd|fWSWn�t�y4�Yn�t
�yH�Ynxt�y\�Yndt�y�}
zd
|
fWYd}
~
Sd}
~
0d}t||||ftjd�tjtjd�YdS0dS)Nz
localcall:)�ERRORzBad request formatrPzUnknown 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)rI�	TypeErrorr=�_getmethods�_getattributes�hasattr�getattr�
isinstance�RemoteObject�	remoteref�
request_queueZputr*�KeyboardInterrupt�OSError�	Exceptionr-r+r,r2r3)r �seqr6�howrJ�
methodnamerF�kwargsr�methods�
attributes�methodZretZex�msgrrr�	localcall�sT








zSocketIO.localcallcCs(|�d||�|�||||�}|�|�S)Nzremotecall:asynccall: )rI�	asynccall�asyncreturn�r rJrgrFrhrerrr�
remotecall�szSocketIO.remotecallcCs(|�d||�|�||||�}|�|�S)Nzremotequeue:asyncqueue: )rI�
asyncqueuerorprrr�remotequeue�szSocketIO.remotequeuecCs`d||||ff}|��}t��|jkr8t��}||j|<|�d|||||�|�||f�|S)NrTz
asynccall:%d:��newseqr.r/r9Z	Conditionr?rI�
putmessage�r rJrgrFrhr6re�cvarrrrrn�s
zSocketIO.asynccallcCs`d||||ff}|��}t��|jkr8t��}||j|<|�d|||||�|�||f�|S)NrUzasyncqueue:%d:rtrwrrrrr�s
zSocketIO.asyncqueuecCs6|�d|�|j|dd�}|�d||�|�|�S)Nz#asyncreturn:%d:call getresponse(): 皙�����?)�waitzasyncreturn:%d:response: )rI�getresponse�decoderesponse)r re�responserrrro�szSocketIO.asyncreturncCs�|\}}|dkr|S|dkr dS|dkr6|�d�dS|dkrT|�d�|��dS|dkrp|�d|�t|��|d	kr�|�d
|�|�t||��dS)NrRrVrXzdecoderesponse: EXCEPTION�EOFzdecoderesponse: EOFrPzdecoderesponse: Internal ERROR:rWzdecoderesponse: Call Exception:)rI�decode_interrupthook�RuntimeError�SystemError)r r}rf�whatrrrr|�s&

zSocketIO.decoderesponsecCst�dSr)�EOFErrorr"rrrrszSocketIO.decode_interrupthookcCs6z|jddd�Wnty0|�d�YdS0dS)Nry)�myseqrzzmainloop:return)r{r�rIr"rrr�mainloops

zSocketIO.mainloopcCs6|�||�}|dur2|\}}|dkr2||�|�f}|S)NrR)�_getresponse�_proxify)r r�rzr}rfr�rrrr{"szSocketIO.getresponsecCs4t|t�rt||j�St|t�r0tt|j|��S|Sr)r^�RemoteProxy�RPCProxyrJ�list�mapr�)r rrrrr�*s


zSocketIO._proxifycCs�|�d|�t��|jur6|�||�}|dur|Sqn^|j|}|��||jvr\|��qH|j|}|�d||f�|j|=|j|=|�	�|SdS)Nz_getresponse:myseq:z-_getresponse:%s: thread woke up: response: %s)
rIr.r/r9�pollresponser?�acquirer>rz�release)r r�rzr}rxrrrr�2s"



�zSocketIO._getresponsecCs|jd|_}|S)N�)�nextseq)r rerrrruHszSocketIO.newseqc	Cs�|�d|d�zt|�}Wn*tjyHtdt|�tjd��Yn0t�	dt
|��|}t
|�dkr�z0t�g|jgg�\}}}|j�
|dt��}Wnttfy�td��Yn0||d�}q^dS)Nzputmessage:%d:rzCannot pickle:r(�<izsocket no longer exists)rIr
�pickleZ
PicklingErrorr-r1r+r,�structZpack�len�selectr;�send�BUFSIZE�AttributeErrorrYrc)r �messagerG�r�w�x�nrrrrvLszSocketIO.putmessage��cCs�|��t|j�|jkr�t�|j��ggg|�\}}}t|�dkrFdSz|j�t�}Wnt	ylt
�Yn0t|�dkr~t
�|j|7_|��|��SrA)�_stage0r��buff�bufneedr�r;�filenoZrecvr�rcr��_stage1)r rzr�r�r�rGrrr�
pollpacket`s
zSocketIO.pollpacketcCsR|jdkrNt|j�dkrN|jdd�}|jdd�|_t�d|�d|_d|_dS)Nrr�r��)�bufstater�r�r�Zunpackr�)r rGrrrr�ps
zSocketIO._stage0cCsP|jdkrLt|j�|jkrL|jd|j�}|j|jd�|_d|_d|_|SdS)Nr�r�r)r�r�r�r�)r �packetrrrr�wszSocketIO._stage1cCs~|�|�}|durdSzt�|�}WnTtjyxtdtjd�tdt|�tjd�tj	tjd�tdtjd��Yn0|S)Nz-----------------------r(zcannot unpickle packet:)
r�r�rZUnpicklingErrorr-r+r,r1r2�print_stack)r rzr�r�rrr�pollmessages
zSocketIO.pollmessagec
CsZzt�d�}Wntjy"Yn 0|\}}|d|ff}|�|�z|�|�}|dur\WdSWn.tyz|��YdSty�YdS0|\}}|d}|�	d||f�|dv�r|�	d|�|�
||�}|�	d||f�|dk�r|�||f�q|dkrqq||k�r|S|j�|d�}	|	dur|	��||j
|<|	��|	��qqdS)	NrrRzpollresponse:%d:myseq:%s)rTrUzpollresponse:%d:localcall:call:z%pollresponse:%d:localcall:response:%srTrU)�response_queue�get�queueZEmptyrvr�r��
handle_EOFr�rIrmr?r�r>�notifyr�)
r r�rzZqmsgrer}r�Zresqrf�cvrrrr��sL



�


zSocketIO.pollresponsecCsV|��|�d�|jD]0}|j|}|��d|j|<|��|��q|��dS)Nr�)r~N)�EOFhookrIr?r�r>r�r�rB)r �keyr�rrrr��s




zSocketIO.handle_EOFcCsdSrrr"rrrr��szSocketIO.EOFhook)NN)"rrrr�rr@rBrIrLrOrmrqrsrnrrror|rr�r{r�r�rurvr�r�r�r�r�r�r�r�r�r�rrrrr8�s>
.


I
r8c@seZdZdS)r_N)rrrrrrrr_�sr_cCst|�}|t|<t|�Sr)�idr<r�)rrJrrrr`�sr`c@seZdZdd�ZdS)r�cCs
||_dSr)rJrNrrrr�szRemoteProxy.__init__N)rrrrrrrrr��sr�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
rFz#ScCs(||_t�||�tj�||||�dSr)Zcurrent_handlerr8rr�BaseRequestHandler)r r;r!Zsvrrrrr�szRPCHandler.__init__cCs|��dSr)r�r"rrr�handleszRPCHandler.handlecCs
t||�Sr�r�rNrrr�get_remote_proxyszRPCHandler.get_remote_proxyN)rrrr:rDrr�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__cCsV|j��\}}|jr$td|tjd�|dtkr>t�||�ntd|tjd�t	�dS)Nz****** Connection request from r(rz** Invalid host: )
r��acceptr:r-r+r,�	LOCALHOSTr8rrc)r Zworking_sockr�rrrr�szRPCClient.acceptcCs
t||�Srr�rNrrrr�"szRPCClient.get_remote_proxyN)rrrr:rDr�r$ZAF_INETZSOCK_STREAMrr�r�rrrrr�s
r�c@s4eZdZdZdZdd�Zdd�Zdd�Zdd	�ZdS)
r�NcCs||_||_dSr)�sockiorJ)r r�rJrrrr+szRPCProxy.__init__cCsp|jdur|��|j�|�r.t|j|j|�S|jdur@|��||jvrd|j�|jd|fi�}|St	|��dS)N�__getattribute__)
�_RPCProxy__methods�_RPCProxy__getmethodsr��MethodProxyr�rJ�_RPCProxy__attributes�_RPCProxy__getattributesrqr�)r r0�valuerrr�__getattr__/s


�zRPCProxy.__getattr__cCs|j�|jddi�|_dS)NrSr)r�rqrJr�r"rrrZ__getattributes=s
�zRPCProxy.__getattributescCs|j�|jddi�|_dS)NrQr)r�rqrJr�r"rrrZ__getmethodsAs
�zRPCProxy.__getmethods)	rrrr�r�rr�r�r�rrrrr�&sr�cCsLt|�D]}t||�}t|�rd||<qt|t�rH|jD]}t||�q8dSr�)�dirr]�callabler^r��	__bases__rZ)rrir0�attr�superrrrrZEs



rZcCs,t|�D]}t||�}t|�sd||<qdSr�)r�r]r�)rrjr0r�rrrr[Ps
r[c@seZdZdd�Zdd�ZdS)r�cCs||_||_||_dSr)r�rJr0)r r�rJr0rrrrYszMethodProxy.__init__cOs|j�|j|j||�}|Sr)r�rqrJr0)r rFrhr�rrr�__call__^szMethodProxy.__call__N)rrrrr�rrrrr�Wsr�cCs||durdSdt_t|�}ztj�|�Wn:tydd}|�|d�}|�|d�}tj�|�Yn0tj�d�|t_dS)N�ascii�backslashreplace�strict�
)	�builtins�_r1r+�stdout�write�UnicodeEncodeError�encode�decode)r��text�encoding�bytesrrr�displayhookfsr��__main__)�mainzidlelib.idle_test.test_rpcr�)�	verbosity)N)+r�rrrr4r�r�r�r$rr�r+r.r2rr	rr
ZPicklerrr�r�rrr<ZQueuerar�r8r_r`r�r�rr�r�rZr[r�r�rZunittestr�rrrr�<module>sP
	2

k