o
    êÕÊc¾  ã                   @   sø   d dl mZ d dl mZ d dlZd dlZG dd„ deƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZ	G dd„ deƒZ
ejdkrpd dlZd dlm  mZ d dlm  mZ d dlm  mZ e	ƒ Zeƒ ZdS d dlZe
ƒ Zeƒ ZdS )é    )ÚABC)ÚabstractmethodNc                   @   sL   e Zd Zeedd„ ƒƒZeedd„ ƒƒZeedd„ ƒƒZeedd„ ƒƒZd	S )
Ú&_InterProcessReaderWriterLockMechanismc                 C   ó   d S ©N© )ÚlockfileÚ	exclusiver   r   ú_G:\Development\the-witcher-3-mod-manager\.venv\lib\site-packages\fasteners\process_mechanism.pyÚtrylock	   ó   z._InterProcessReaderWriterLockMechanism.trylockc                 C   r   r   r   ©r   r   r   r
   Úunlock   r   z-_InterProcessReaderWriterLockMechanism.unlockc                 C   r   r   r   ©Úpathr   r   r
   Ú
get_handle   r   z1_InterProcessReaderWriterLockMechanism.get_handlec                 C   r   r   r   r   r   r   r
   Úclose_handle   r   z3_InterProcessReaderWriterLockMechanism.close_handleN)	Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   r   r   r   r   r   r   r
   r      s    r   c                   @   s,   e Zd Zeedd„ ƒƒZeedd„ ƒƒZdS )Ú_InterProcessMechanismc                 C   r   r   r   r   r   r   r
   r      r   z_InterProcessMechanism.trylockc                 C   r   r   r   r   r   r   r
   r   $   r   z_InterProcessMechanism.unlockN)r   r   r   r   r   r   r   r   r   r   r
   r      s    r   c                   @   ó&   e Zd Z	 edd„ ƒZedd„ ƒZdS )Ú_WindowsInterProcessMechanismc                 C   ó   |   ¡ }t |tjd¡ d S ©Né   )ÚfilenoÚmsvcrtÚlockingÚLK_NBLCK©r   r   r   r   r
   r   -   ó   z%_WindowsInterProcessMechanism.trylockc                 C   r   r   )r   r   r   ÚLK_UNLCKr!   r   r   r
   r   2   r"   z$_WindowsInterProcessMechanism.unlockN©r   r   r   r   r   r   r   r   r   r
   r   *   s    
r   c                   @   r   )Ú_FcntlInterProcessMechanismc                 C   s   t  | t jt jB ¡ d S r   )ÚfcntlÚlockfÚLOCK_EXÚLOCK_NBr   r   r   r
   r   ;   s   z#_FcntlInterProcessMechanism.trylockc                 C   ó   t  | t j¡ d S r   ©r&   r'   ZLOCK_UNr   r   r   r
   r   ?   ó   z"_FcntlInterProcessMechanism.unlockNr$   r   r   r   r
   r%   8   s    
r%   c                   @   ó>   e Zd Z	 edd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZd	S )
Ú-_WindowsInterProcessReaderWriterLockMechanismc                 C   sj   |r	t jt jB }nt j}t |  ¡ ¡}t ||dddt t	 
¡ ¡¡}|r&dS t ¡ }|tjkr1dS t|ƒ‚)Nr   r   TF)Úwin32conÚLOCKFILE_FAIL_IMMEDIATELYÚLOCKFILE_EXCLUSIVE_LOCKr   Úget_osfhandler   Ú	win32fileÚ
LockFileExÚpointerÚ
pywintypesÚ
OVERLAPPEDÚGetLastErrorÚERROR_LOCK_VIOLATIONÚOSError)r   r	   ÚflagsÚhandleÚokZ
last_errorr   r   r
   r   H   s   
z5_WindowsInterProcessReaderWriterLockMechanism.trylockc              
   C   s>   t  |  ¡ ¡}t |dddt t ¡ ¡¡}|stt 	¡ ƒ‚d S )Nr   r   )
r   r2   r   r3   ÚUnlockFileExr5   r6   r7   r:   r8   )r   r<   r=   r   r   r
   r   [   s
   ÿz4_WindowsInterProcessReaderWriterLockMechanism.unlockc                 C   ó
   t | dƒS ©Nza+©Úopenr   r   r   r
   r   b   ó   
z8_WindowsInterProcessReaderWriterLockMechanism.get_handlec                 C   ó   |   ¡  d S r   ©Úcloser   r   r   r
   r   f   ó   z:_WindowsInterProcessReaderWriterLockMechanism.close_handleN©r   r   r   r   r   r   r   r   r   r   r   r
   r.   D   s    


r.   c                   @   r-   )
Ú+_FcntlInterProcessReaderWriterLockMechanismc              
   C   sr   |r	t jt jB }nt jt jB }z	t  | |¡ W dS  ttfy8 } z|jtjtj	fv r2W Y d }~dS |‚d }~ww )NTF)
r&   r(   r)   ZLOCK_SHr'   ÚIOErrorr:   ÚerrnoÚEACCESÚEAGAIN)r   r	   r;   Úer   r   r
   r   o   s   €üz3_FcntlInterProcessReaderWriterLockMechanism.trylockc                 C   r*   r   r+   r   r   r   r
   r   €   r,   z2_FcntlInterProcessReaderWriterLockMechanism.unlockc                 C   r?   r@   rA   r   r   r   r
   r   „   rC   z6_FcntlInterProcessReaderWriterLockMechanism.get_handlec                 C   rD   r   rE   r   r   r   r
   r   ˆ   rG   z8_FcntlInterProcessReaderWriterLockMechanism.close_handleNrH   r   r   r   r
   rI   k   s    


rI   Únt)Úabcr   r   rK   Úosr   r   r   r%   r.   rI   Únamer   Úfasteners.pywin32.pywintypesÚpywin32r6   Úfasteners.pywin32.win32conr/   Úfasteners.pywin32.win32filer3   Ú%_interprocess_reader_writer_mechanismÚ_interprocess_mechanismr&   r   r   r   r
   Ú<module>   s(    '
"

