
    "j                     t    d dl Z d dlZd dlZd dlmZ d dlmZ d dlZ ej                  e	      Z
 G d d      Zy)    N)Protocol)S_IFREGc                   Z    e Zd ZdZdZdZd Zed        ZddZ	d Z
d	 Zd
 Zd Zd Zd Zy)Syncz/data/local/tmpi  i   c                     || _         y N)
connection)selfr	   s     W/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/ppadb/sync/__init__.py__init__zSync.__init__   s	    $    c                 |    dj                  t        j                  t        j                  j                  |             S )Nz{}/{})formatr   	TEMP_PATHospathbasename)r   s    r   tempz	Sync.temp   s&    ~~dnnbgg.>.>t.DEEr   Nc                 8   t         j                  j                  |      st        dj	                  |            t        j
                  |      }t        |j                        }t         j                  j                  |      }d}|t        z  }dj	                  ||      }	| j                  t        j                  |	       t        |d      5 }
	 |
j                  | j                        }|sn_|t!        |      z  }| j#                  t        j$                  t!        |             | j&                  j)                  |       |
 ||||       }	 ddd       | j#                  t        j*                  |       | j&                  j-                          y# 1 sw Y   DxY w)zPush from local path |src| to |dest| on device.

        :param progress: callback, called with (filename, total_size, sent_size)
        zCan't find the source file {}r   z{dest},{mode})destmoderbN)r   r   existsFileNotFoundErrorr   statintst_mtimegetsizer   	_send_strr   SENDopenreadDATA_MAX_LENGTHlen_send_lengthDATAr	   writeDONE_check_status)r
   srcr   r   progressr   	timestamp
total_size	sent_sizeargsstreamchunks               r   pushz	Sync.push   sP   
 ww~~c"#$C$J$J3$OPPwws|&	WW__S)
	 g~%% & 
 	x}}d+ #t_ 	9D$8$89SZ'	!!(--U<%%e,'S*i8  		9 	(--3%%'	9 	9s   A?FFc                     d }| j                  t        j                  |       t        |d      5 }	 | j                  j                  d      j                  d      }|t        j                  k(  r"| j                         }|j                  |       ns|t        j                  k(  r%| j                  j                  d       	 d d d        y |t        j                  k(  r(| j                         j                  d      cd d d        S # 1 sw Y   y xY w)Nwb   utf-8)r   r   RECVr!   r	   r"   decoder&   
_read_datar'   r(   FAIL)r
   r*   r   errorr0   flagdatas          r   pullz	Sync.pullB   s     	x}}c* $ 	=++A.55g>8==(??,DLL&X]]*OO((+	= 	= X]]*??,33G<	= 	=	= 	=s   BD1DDDc                 .    t        j                  d|      S Nz<I)structunpack)r
   little_endians     r   _integerzSync._integerV   s    }}T=11r   c                 .    t        j                  d|      S r@   )rA   pack)r
   ns     r   _little_endianzSync._little_endianY   s    {{4##r   c                    | j                  | j                  j                  d            d   }t               }t	        |      |k  r9|| j                  j                  |t	        |      z
        z  }t	        |      |k  r9|S )Nr5   r   )rD   r	   r"   	bytearrayr$   )r
   lengthr=   s      r   r9   zSync._read_data\   sl    t33A67:{$i& DOO((#d));<<D $i& r   c                     | j                  |      }|j                         |z   }t        j                  dj	                  |             | j
                  j                  |       y )NzSend length: {})rH   encodeloggerdebugr   r	   r'   )r
   cmdrK   le_lenr=   s        r   r%   zSync._send_lengthc   sL    $$V,zz|f$&--d34d#r   c                 N   t         j                  dj                  ||             |j                  d      }| j	                  t        |            }|j                         |z   |z   }t         j                  dj                  |             | j                  j                  |       y)z
        Format:
            {Command}{args length(little endian)}{str}
        Length:
            {4}{4}{str length}
        z{} {}r6   zSend string: {}N)rN   rO   r   rM   rH   r$   r	   r'   )r
   rP   r/   le_args_lenr=   s        r   r   zSync._send_strj   s|     	W^^C./{{7#))#d)4zz|k)D0&--d34d#r   r   )__name__
__module____qualname__r   DEFAULT_CHMODr#   r   staticmethodr   r2   r>   rD   rH   r9   r%   r    r   r   r   r      sP    !IMO% F F'(R=(2$$$r   r   )rA   timer   ppadb.protocolr   ppadb.sync.statsr   logging	getLoggerrT   rN   r   rY   r   r   <module>r_      s5      	 # $ 			8	$j$ j$r   