HEX
Server: LiteSpeed
System: Linux server384.web-hosting.com 4.18.0-553.124.4.lve.el8.x86_64 #1 SMP Fri May 15 13:02:13 UTC 2026 x86_64
User: drivkxoj (2377)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/pycriu/__pycache__/criu.cpython-36.opt-1.pyc
3


i�"�@s�ddlZddlZddlZddlZddlZddljZdZGdd�d�Z	Gdd�de	�Z
Gdd�de	�ZGd	d
�d
e	�ZGdd�de
�ZGd
d�de�ZGdd�de�ZGdd�d�ZdS)�Nz./criu_service.socketc@s8eZdZdZdZdZdZdZdZdZ	dd�Z
dd	�ZdS)
�
_criu_commz/
    Base class for communication classes.
    r��NcCsdS)z�
        Connect to criu and return socket object.
        daemon -- is for whether or not criu should daemonize if executing criu from binary(comm_bin).
        N�)�self�daemonrr�/usr/lib/python3.6/criu.py�connectsz_criu_comm.connectcCsdS)z'
        Disconnect from criu.
        Nr)rrrr�
disconnectsz_criu_comm.disconnect)�__name__�
__module__�__qualname__�__doc__�COMM_SK�COMM_FD�COMM_BIN�	comm_type�comm�skr	r
rrrrr
src@s(eZdZdZdd�Zdd�Zdd�ZdS)	�
_criu_comm_skz.
    Communication class for unix socket.
    cCs|j|_||_dS)N)rrr)rZsk_pathrrr�__init__+sz_criu_comm_sk.__init__cCsbtjtjtj�|_y|jj|j�Wn6tk
r@td��Yntk
rZtd��YnX|jS)NzSocket file not found.zService not running.)�socket�AF_UNIX�SOCK_SEQPACKETrr	r�FileNotFoundError�ConnectionRefusedError)rrrrrr	/sz_criu_comm_sk.connectcCs|jj�dS)N)r�close)rrrrr
<sz_criu_comm_sk.disconnectN)rrr
rrr	r
rrrrr&s
rc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�
_criu_comm_fdz2
    Communication class for file descriptor.
    cCs|j|_||_dS)N)rrr)r�fdrrrrEsz_criu_comm_fd.__init__cCstj|jtjtj�|_|jS)N)rZfromfdrrrr)rrrrrr	Is
z_criu_comm_fd.connectcCs|jj�dS)N)rr)rrrrr
Osz_criu_comm_fd.disconnectN)rrr
rrr	r
rrrrr@src@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_criu_comm_binz)
    Communication class for binary.
    cCs|j|_||_d|_d|_dS)N)rrr�swrkr)rZbin_pathrrrrXsz_criu_comm_bin.__init__cstjtjtj��tj�dtj�}tj�dtj|tjB�tj�dtj�}tj�dtj|tj@�|�_t	j
�}|dkrƇ�fdd�}|r�t	j
�}|dkr�t	j�|�q�t	jd�q�|�n|r�t	j
|d��dj�tjd�djd��d�_�d�_�jS)Nrrcshtjd�tjd�tjd��djtjdtj���tj�j�jdd�dj�g�tj	d�dS)Nrrr�ir z%d)
�osr�send�struct�pack�getpid�execvpr�fileno�_exitr)�cssrrr�	exec_criuls


z)_criu_comm_bin.connect.<locals>.exec_criur!�)rZ
socketpairrr�fcntlZF_GETFDZF_SETFDZ
FD_CLOEXECrr"�fork�setsidr)�waitpidrr$�unpack�recvr r)rr�flags�pr+r)r*rrr	^s,
z_criu_comm_bin.connectcCs"|jj�|jstj|jd�dS)Nr)rrrr"r0r )rrrrr
�s
z_criu_comm_bin.disconnectN)rrr
rrr	r
rrrrrSs0rc@s eZdZdZdZdZdd�ZdS)�
CRIUExceptionz?
    Exception class for handling and storing criu errors.
    NcCs|jS)N)�_str)rrrr�__str__�szCRIUException.__str__)rrr
r�typr6r7rrrrr5�sr5c@seZdZdZdd�ZdS)�CRIUExceptionInternalzC
    Exception class for handling and storing internal errors.
    cCs"||_dtjj|j�|f|_dS)Nz!%s failed with internal error: %s)r8�rpc�
criu_req_type�Namer6)rr8�srrrr�szCRIUExceptionInternal.__init__N)rrr
rrrrrrr9�sr9c@s eZdZdZdd�Zdd�ZdS)�CRIUExceptionExternalzC
    Exception class for handling and storing criu RPC errors.
    cCs ||_||_||_|j�|_dS)N)r8�resp_typ�errno�_gen_error_strr6)rZreq_typr?r@rrrr�szCRIUExceptionExternal.__init__cCs�dtjj|j�f}|j|jkr0|d|jf7}|d|jf7}|jtjkrV|d7}nL|jtjkrx|jtjkrx|d7}n*|jtj	kr�|jtj
kr�|d7}n|d7}|S)Nz%s failed: zUnexpected response type %d: zError(%d): zBad optionszNo process with such pidz)Process with requested pid already existsZUnknown)r:r;r<r8r?r@ZEBADRQC�DUMPZESRCH�RESTOREZEEXIST)rr=rrrrA�s


z$CRIUExceptionExternal._gen_error_strN)rrr
rrrArrrrr>�sr>c@steZdZdZdZdZdd�Zefdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS)�criuz 
    Call criu through RPC.
    NcCs"|jd�tjdd�|_d|_dS)NrDr)Z
images_dir_fd���)�
use_binaryr:Z	criu_opts�optsr)rrrrr�s
z
criu.__init__cCst|�|_dS)zZ
        Access criu using unix socket which that belongs to criu service daemon.
        N)r�_comm)rZsk_namerrr�use_sk�szcriu.use_skcCst|�|_dS)z0
        Access criu using provided fd.
        N)rrH)rrrrr�use_fd�szcriu.use_fdcCst|�|_dS)zO
        Access criu by execing it using provided path to criu binary.
        N)rrH)rZbin_namerrrrF�szcriu.use_binarycCs�d}|jtjkr"|jjd�r"d}yx|js8|jj|�}n|j}|jrJ||_|j	|j
��|jt|jdt
jt
jB���}|js�|jj�tj�}|j|�Wn2tk
r�}zt|jt|���WYdd}~XnX|S)zA
        As simple as send request and receive response.
        F�pidTrN)�typer:rBrGZHasFieldrrHr	�	keep_openr#ZSerializeToStringr2�lenrZ	MSG_TRUNCZMSG_PEEKr
Z	criu_respZParseFromString�	Exceptionr9�str)r�reqrr=Zbuf�resp�errr�_send_req_and_recv_resp�s$
"zcriu._send_req_and_recv_respcCsDtj�}tj|_|jj|j�|j|�}|js@t|j|j|j	��dS)zB
        Checks whether the kernel support is up-to-date.
        N)
r:�criu_reqZCHECKrLrG�	MergeFromrT�successr>�cr_errno)rrQrRrrr�checks
z
criu.checkcCsFtj�}tj|_|jj|j�|j|�}|js@t|j|j|j	��|j
S)zC
        Checkpoint a process/tree identified by opts.pid.
        )r:rUrBrLrGrVrTrWr>rX�dump)rrQrRrrrrZs
z	criu.dumpcCsFtj�}tj|_|jj|j�|j|�}|js@t|j|j|j	��|j
S)zC
        Checkpoint a process/tree identified by opts.pid.
        )r:rUZPRE_DUMPrLrGrVrTrWr>rXrZ)rrQrRrrr�pre_dump+s
z
criu.pre_dumpcCsFtj�}tj|_|jj|j�|j|�}|js@t|j|j|j	��|j
S)z)
        Restore a process/tree.
        )r:rUrCrLrGrVrTrWr>rX�restore)rrQrRrrrr\:s
zcriu.restorecCsLtj�}tj|_|jj|j�d|_|j|�}|jsFt	|j|j|j
��|jS)NT)r:rUZPAGE_SERVER_CHLDrLrGrVrMrTrWr>rXZps)rrQrRrrr�page_server_chldIs
zcriu.page_server_chldcCs>tj�}tj|_||_|j|�}|js8t|j|j|j��|j	S)N)
r:rUZWAIT_PIDrLrKrTrWr>rXZstatus)rrKrQrRrrr�wait_pidVs
z
criu.wait_pid)rrr
rrGrHr�CR_DEFAULT_SERVICE_ADDRESSrIrJrFrTrYrZr[r\r]r^rrrrrD�s#

rD)rr@r-r"r$Zpycriu.rpc_pb2Zrpc_pb2r:r_rrrrrOr5r9r>rDrrrr�<module>s
A"