o
    Žõ±j(  ã                   @   s\   d dl Z d dlZd dlT G dd„ dejƒZG dd„ dejƒZG dd„ dƒZG d	d
„ d
ƒZdS )é    N)Ú*c                   @   s   e Zd ZdZdZdS )ÚReadFlagé   é   N)Ú__name__Ú
__module__Ú__qualname__ÚSMB2_READFLAG_READ_UNBUFFEREDÚ SMB2_READFLAG_REQUEST_COMPRESSED© r   r   ú•/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/protocol/smb2/commands/read.pyr      s    r   c                   @   s   e Zd ZdZdZdZdS )ÚChannelr   r   r   N)r   r   r   ÚSMB2_CHANNEL_NONEÚSMB2_CHANNEL_RDMA_V1ÚSMB2_CHANNEL_RDMA_V1_INVALIDATEr   r   r   r   r   
   s    r   c                   @   ó<   e Zd Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZd	d
„ ZdS )ÚREAD_REQc                 C   sT   d| _ d| _d| _d | _d | _d | _d | _tj| _d | _	d| _
d| _d | _d | _d S )Né1   éP   r   )ÚStructureSizeÚPaddingÚFlagsÚLengthÚOffsetÚFileIdÚMinimumCountr   r   ÚRemainingBytesÚReadChannelInfoOffsetÚReadChannelInfoLengthÚBufferÚReadChannelInfo©Úselfr   r   r   Ú__init__   s   
zREAD_REQ.__init__c                 C   s<  | j r| j  ¡ | _d| _t| j  ¡ ƒ| _| jjdddd�}|| jjdddd�7 }|| jjdddd�7 }|| j	jdddd�7 }|| j
jdddd�7 }|| jjd	ddd�7 }|| jjdddd�7 }|| jjjdddd�7 }|| jjdddd�7 }|| jjdddd�7 }|| jjdddd�7 }| jd
kr˜|| j7 }|S |d7 }|S )Nén   r   ÚlittleF)Ú	byteorderÚsignedr   é   é   é   r   ó    )r    Úto_bytesr   r   Úlenr   r   r   r   r   r   r   r   r   Úvaluer   ©r"   Útr   r   r   r,   #   s(   

ÿzREAD_REQ.to_bytesc                 C   s   t  t | ¡¡S ©N)r   Úfrom_bufferÚioÚBytesIO)Úbbuffr   r   r   Ú
from_bytes:   s   zREAD_REQ.from_bytesc                 C   sF  t ƒ }tj|  d¡dd�|_|jdksJ ‚tj|  d¡dd�|_ttj|  d¡dd�ƒ|_tj|  d¡dd�|_tj|  d¡dd�|_	tj|  d¡dd�|_
tj|  d¡dd�|_ttj|  d¡dd�ƒ|_tj|  d¡dd�|_tj|  d¡dd�|_tj|  d¡dd�|_|jd	kr¡|  |jtj¡ |  |j¡|_|j ¡ |_|S )
Nr   r%   ©r&   r   r   r(   r)   r*   r   )r   Úintr6   Úreadr   r   r   r   r   r   r   r   r   r   r   r   Úseekr3   ÚSEEK_SETr   r    ©ÚbuffÚmsgr   r   r   r2   >   s$   
zREAD_REQ.from_bufferc                 C   s¢   d}|d| j  7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d	| j 7 }|d
| j 7 }|d| j	 7 }|d| j
 7 }|S )Nz==== SMB2 READ REQ ====
úStructureSize: %s
zPadding: %s
zFlags: %s
zLength: %s
zOffset: %s
zFileId: %s
zMinimumCount: %s
zChannel: %s
zRemainingBytes: %s
zReadChannelInfoOffset: %s
zReadChannelInfoLength: %s
)r   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   Ú__repr__V   s   zREAD_REQ.__repr__N©	r   r   r   r#   r,   Ústaticmethodr6   r2   r@   r   r   r   r   r      s    

r   c                   @   r   )Ú
READ_REPLYc                 C   s.   d| _ d | _d| _d | _d | _d| _d | _d S )Né   r   )r   Ú
DataOffsetÚReservedÚ
DataLengthÚDataRemainingÚ	Reserved2r   r!   r   r   r   r#   h   s   
zREAD_REPLY.__init__c                 C   s   d S r1   r   r!   r   r   r   r,   q   s   zREAD_REPLY.to_bytesc                 C   s¦   t ƒ }tj| d d… dd�|_tj| dd… dd�|_| dd… |_tj| dd… dd�|_tj| dd… dd�|_| dd… |_| |jd	 |j|j d	 … |_	|S )
Nr   r%   r7   é   r(   r)   é   r*   é@   )
rC   r8   r6   r   rE   rF   rG   rH   rI   r   )r5   r>   r   r   r   r6   u   s    zREAD_REPLY.from_bytesc                 C   s˜   t ƒ }tj|  d¡dd�|_tj|  d¡dd�|_|  d¡|_tj|  d¡dd�|_tj|  d¡dd�|_|  d¡|_	|  
|jtj¡ |  |j¡|_|S )Nr   r%   r7   r   r(   )rC   r8   r6   r9   r   rE   rF   rG   rH   rI   r:   r3   r;   r   r<   r   r   r   r2   …   s   zREAD_REPLY.from_bufferc                 C   sN   d}|d| j  7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|S )Nz==== SMB2 READ REPLY ====
r?   zDataOffset: %s
zDataLength: %s
zDataRemaining: %s
zBuffer: %s
)r   rE   rG   rH   r   r/   r   r   r   r@   ”   s   zREAD_REPLY.__repr__NrA   r   r   r   r   rC   g   s    	

rC   )	r3   ÚenumÚaiosmb.wintypes.access_maskÚIntFlagr   ÚEnumr   r   rC   r   r   r   r   Ú<module>   s    W