a
    &ñ»j¾  ã                   @   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rÞd 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n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   s   d S ©N© )ÚlockfileÚ	exclusiver   r   úAE:\soccer\ml_env\Lib\site-packages\fasteners/process_mechanism.pyÚtrylock	   s    z._InterProcessReaderWriterLockMechanism.trylockc                 C   s   d S r   r   ©r   r   r   r	   Úunlock   s    z-_InterProcessReaderWriterLockMechanism.unlockc                 C   s   d S r   r   ©Úpathr   r   r	   Ú
get_handle   s    z1_InterProcessReaderWriterLockMechanism.get_handlec                 C   s   d S r   r   r   r   r   r	   Úclose_handle   s    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   s   d S r   r   r   r   r   r	   r
      s    z_InterProcessMechanism.trylockc                 C   s   d S r   r   r   r   r   r	   r   $   s    z_InterProcessMechanism.unlockN)r   r   r   r   r   r
   r   r   r   r   r	   r      s   r   c                   @   s(   e Zd ZdZedd„ ƒZedd„ ƒZdS )Ú_WindowsInterProcessMechanismz?Interprocess lock implementation that works on windows systems.c                 C   s   |   ¡ }t |tjd¡ d S ©Né   )ÚfilenoÚmsvcrtÚlockingÚLK_NBLCK©r   r   r   r   r	   r
   -   s    z%_WindowsInterProcessMechanism.trylockc                 C   s   |   ¡ }t |tjd¡ d S r   )r   r   r   ÚLK_UNLCKr   r   r   r	   r   2   s    z$_WindowsInterProcessMechanism.unlockN©r   r   r   Ú__doc__r   r
   r   r   r   r   r	   r   *   s
   
r   c                   @   s(   e Zd ZdZedd„ ƒZedd„ ƒZdS )Ú_FcntlInterProcessMechanismz=Interprocess lock implementation that works on posix systems.c                 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   s   t  | t j¡ d S r   ©r"   r#   ZLOCK_UNr   r   r   r	   r   ?   s    z"_FcntlInterProcessMechanism.unlockNr   r   r   r   r	   r!   8   s
   
r!   c                   @   s@   e Zd ZdZedd„ ƒZedd„ ƒZedd„ ƒZedd	„ ƒZd
S )Ú-_WindowsInterProcessReaderWriterLockMechanismzRInterprocess readers writer lock implementation that works on windows
    systems.c                 C   sn   |rt jt jB }nt j}t |  ¡ ¡}t ||dddt t	 
¡ ¡¡}|rLdS t ¡ }|tjkrbdS t|ƒ‚d S )Nr   r   TF)Úwin32conZLOCKFILE_FAIL_IMMEDIATELYZLOCKFILE_EXCLUSIVE_LOCKr   Úget_osfhandler   Ú	win32fileZ
LockFileExÚpointerÚ
pywintypesÚ
OVERLAPPEDÚGetLastErrorZ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   r)   r   r*   ZUnlockFileExr+   r,   r-   r/   r.   )r   r1   r2   r   r   r	   r   [   s    z4_WindowsInterProcessReaderWriterLockMechanism.unlockc                 C   s
   t | dƒS ©Nza+©Úopenr   r   r   r	   r   b   s    z8_WindowsInterProcessReaderWriterLockMechanism.get_handlec                 C   s   |   ¡  d S r   ©Úcloser   r   r   r	   r   f   s    z:_WindowsInterProcessReaderWriterLockMechanism.close_handleN©	r   r   r   r    r   r
   r   r   r   r   r   r   r	   r'   D   s   


r'   c                   @   s@   e Zd ZdZedd„ ƒZedd„ ƒZedd„ ƒZedd	„ ƒZd
S )Ú+_FcntlInterProcessReaderWriterLockMechanismzPInterprocess readers writer lock implementation that works on posix
    systems.c              
   C   s‚   |rt jt jB }nt jt jB }zt  | |¡ W dS  ttfy| } z0|jtjtj	fv rdW Y d }~dS |‚W Y d }~n
d }~0 0 d S )NTF)
r"   r$   r%   ZLOCK_SHr#   ÚIOErrorr/   ÚerrnoÚEACCESÚEAGAIN)r   r   r0   Úer   r   r	   r
   o   s    z3_FcntlInterProcessReaderWriterLockMechanism.trylockc                 C   s   t  | t j¡ d S r   r&   r   r   r   r	   r   €   s    z2_FcntlInterProcessReaderWriterLockMechanism.unlockc                 C   s
   t | dƒS r3   r4   r   r   r   r	   r   „   s    z6_FcntlInterProcessReaderWriterLockMechanism.get_handlec                 C   s   |   ¡  d S r   r6   r   r   r   r	   r   ˆ   s    z8_FcntlInterProcessReaderWriterLockMechanism.close_handleNr8   r   r   r   r	   r9   k   s   


r9   Únt)Úabcr   r   r;   Úosr   r   r   r!   r'   r9   Únamer   Zfasteners.pywin32.pywintypesZpywin32r,   Zfasteners.pywin32.win32conr(   Zfasteners.pywin32.win32filer*   Z%_interprocess_reader_writer_mechanismZ_interprocess_mechanismr"   r   r   r   r	   Ú<module>   s&   '"
