o
    Žõ±jô  ã                   @   sV   d dl Z d dlZd dlT d dlmZ G dd„ dejƒZG dd„ dƒZG dd	„ d	ƒZdS )
é    N)Ú*)ÚChannelc                   @   s   e Zd ZdZdZdZdS )Ú	WriteFlagr   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚNONEÚWRITE_THROUGHÚWRITE_UNBUFFERED© r   r   ú–/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/protocol/smb2/commands/write.pyr      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 )Ú	WRITE_REQc                 C   sV   d| _ d | _d | _d | _d | _tj| _d| _d| _d| _	t
j| _d | _d | _d | _d S )Né1   r   )ÚStructureSizeÚ
DataOffsetÚLengthÚOffsetÚFileIdr   ÚSMB2_CHANNEL_NONEÚRemainingBytesÚWriteChannelInfoOffsetÚWriteChannelInfoLengthr   r
   ÚFlagsÚBufferÚWriteChannelInfoÚData©Úselfr   r   r   Ú__init__   s   
zWRITE_REQ.__init__c                 C   sT  d| _ | jrt| jƒ| _| j| _nd| _d| _| jr5|  j| j ¡ 7  _| j t| jƒ | _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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7 }|S )Nép   r   ó    r   ÚlittleF)Ú	byteorderÚsignedé   é   é   )r   r   Úlenr   r   r   Úto_bytesr   r   r   r   r   r   Úvaluer   r   ©r    Útr   r   r   r+   !   s,   

zWRITE_REQ.to_bytesc                 C   ó   t  t | ¡¡S ©N)r   Úfrom_bufferÚioÚBytesIO©Úbbuffr   r   r   Ú
from_bytes=   ó   zWRITE_REQ.from_bytesc                 C   sB  t ƒ }tj|  d¡dd�|_|jdksJ ‚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�|_ttj|  d¡dd�ƒ|_|  |jtj¡ |  |j¡|_|jdkrŸ|  |jtj¡ |  |j¡|_|S )	Nr   r$   ©r%   r   r'   r(   r)   r   )r   Úintr6   Úreadr   r   r   r   r   r   r   r   r   r   r   Úseekr2   ÚSEEK_SETr   r   ©ÚbuffÚmsgr   r   r   r1   A   s$   
zWRITE_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 }|d| j 7 }|S )Nz==== SMB2 WRITE REQ ====
úStructureSize: %s
zDataOffset: %s
zLength: %s
zOffset: %s
zFileId: %s
zChannel: %s
zRemainingBytes: %s
úWriteChannelInfoOffset: %s
úWriteChannelInfoLength: %s
zFlags: %s
z
Data: %s
zWriteChannelInfo: %s
)r   r   r   r   r   r   r   r   r   r   r   r   r-   r   r   r   Ú__repr__Z   s   zWRITE_REQ.__repr__N©	r   r   r	   r!   r+   Ústaticmethodr6   r1   rC   r   r   r   r   r      s    

r   c                   @   r   )ÚWRITE_REPLYc                 C   s(   d| _ d| _d | _d | _d| _d| _d S )Né   r   )r   ÚReservedÚCountÚ	Remainingr   r   r   r   r   r   r!   m   s   
zWRITE_REPLY.__init__c                 C   s   d S r0   r   r   r   r   r   r+   u   s   zWRITE_REPLY.to_bytesc                 C   r/   r0   )rF   r1   r2   r3   r4   r   r   r   r6   y   r7   zWRITE_REPLY.from_bytesc                 C   sœ   t ƒ }tj|  d¡dd�|_|jdksJ ‚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�|_	|S )Nr   r$   r8   rG   r'   )
rF   r9   r6   r:   r   rH   rI   rJ   r   r   r=   r   r   r   r1   }   s   zWRITE_REPLY.from_bufferc                 C   sN   d}|d| j  7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|S )Nz==== SMB2 WRITE REPLY ====
r@   zCount: %s
zRemaining: %s
rA   rB   )r   rI   rJ   r   r   r-   r   r   r   rC   Š   s   zWRITE_REPLY.__repr__NrD   r   r   r   r   rF   l   s    

rF   )	r2   ÚenumÚaiosmb.wintypes.access_maskÚ"aiosmb.protocol.smb2.commands.readr   ÚIntFlagr   r   rF   r   r   r   r   Ú<module>   s    ^