o
    Žõ±jR  ã                   @   s0   d dl T d dlZG dd„ dƒZG dd„ dƒZdS )é    )Ú*Nc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚSectionc                 C   s    || _ | j t|ƒ | _|| _d S ©N)ÚstartÚlenÚendÚdata)Úselfr   r   © r
   ú§/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/commons/interfaces/blocking/file/blockingfile.pyÚ__init__   s   
zSection.__init__c                 C   sF   | j |  kr| jkr!n dS | j ||   kr| jkr!dS  dS dS )NTF)r   r   )r	   ÚposÚsizer
   r
   r   Úinbuffer
   s   þÿzSection.inbufferc                 C   s   || j  }| j||| … S r   )r   r   )r	   r   r   Ústr
   r
   r   Úread   s   
zSection.readN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r
   r
   r
   r   r      s    r   c                   @   sX   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zddd„Z	dd„ Z
dd„ ZdS )ÚSMBBlockingFileéÿÿ  c                 C   s4   || _ || _d | _d| _d| _|| _g | _d | _d S )Nr   )Úin_qÚout_qÚhandleÚpositionÚnext_idÚbuffer_sizeÚbuffersÚfilesize)r	   r   r   r   r
   r
   r   r      s   
zSMBBlockingFile.__init__c                 C   s@   | j  |¡ | j ¡ }|j|jkr|S |jtjkrt|jƒ‚d S r   )	r   Úputr   ÚgetÚcmd_typeÚ
SMBFILECMDÚERRORÚ	ExceptionÚerror)r	   ÚcmdÚreplyr
   r
   r   Úsr   s   

ÿzSMBBlockingFile.src                 C   s>   | j }|  j d7  _ t|||ƒ}|  |¡}|j| _|j| _d S ©Né   )r   ÚSMBFileOpenCommandr(   r   r   )r	   Úunc_pathÚmodeÚcmd_idr&   r'   r
   r
   r   Úopen'   s   
zSMBBlockingFile.openc                 C   sò   |dkrdS | j d ur,| jD ]}| | j|¡r+| | j|¡}|  jt|ƒ7  _|  S q| j}|  jd7  _|}| j d urN|| j k rN| j| j | j krN| j }t|| j	| j|ƒ}|  
|¡}| j t| j|jƒ¡ |jd |… }|  jt|ƒ7  _|S )Nr   ó    r*   )r   r   r   r   r   r   r   r   ÚSMBFileReadCommandr   r(   Úappendr   r   )r	   ÚcountÚsectionr   r.   Útcr&   r'   r
   r
   r   r   /   s(   

ý&
zSMBBlockingFile.readc                 C   s<   | j }|  j d7  _ t|| j| j|ƒ}|  |¡}|j| _d S r)   )r   ÚSMBFileWriteCommandr   r   r(   )r	   r   r.   r&   r'   r
   r
   r   ÚwriteI   s
   
zSMBBlockingFile.writec                 C   s   | j S r   )r   )r	   r
   r
   r   ÚtellP   s   zSMBBlockingFile.tellr   c                 C   s@   |dkr	|| _ d S |dkr|  j |7  _ d S |dkrtdƒ‚d S )Nr   r*   é   zWhence 2 is not implemented)r   r$   )r	   r   Úwhencer
   r
   r   ÚseekS   s   
ÿzSMBBlockingFile.seekc                 C   s6   | j }|  j d7  _ t|| jƒ}|  |¡}|j| _d S r)   )r   ÚSMBFileCloseCommandr   r(   )r	   r.   r&   r'   r
   r
   r   Úclose[   s
   
zSMBBlockingFile.closec                 C   s    | j }|  j d7  _ t|ƒ}d S r)   )r   ÚSMBFileTerminateCommand)r	   r.   r&   r
   r
   r   Ú	terminateb   s   zSMBBlockingFile.terminateN)r   )r   )r   r   r   r   r(   r/   r   r7   r8   r;   r=   r?   r
   r
   r
   r   r      s    


r   )Ú0aiosmb.commons.interfaces.blocking.file.protocolÚ	tracebackr   r   r
   r
   r
   r   Ú<module>   s    