File: //opt/alt/python35/lib/python3.5/site-packages/lockfile/__pycache__/sqlitelockfile.cpython-35.pyc
��UV� � @ s� d d l m Z m Z d d l Z d d l Z y e Wn e k
rP e Z Yn Xd d l m Z m
Z
m Z m Z m
Z
Gd d � d e � Z d S)� )�absolute_import�divisionN� )�LockBase� NotLocked� NotMyLock�LockTimeout�
AlreadyLockedc @ sy e Z d Z d Z d Z d d d d � Z d d d � Z d d � Z d
d � Z d d
� Z d d � Z
d d � Z d S)�SQLiteLockFilezDemonstrate SQL-based locking.NTc
C s t j | | | | � t | j � | _ t | j � | _ t j d k r� d d l } | j � \ } } t j
| � t j | � ~ ~ | t _ d d l } | j
t j � | _ | j j � } y | j d � Wn | j k
r� Yn0 X| j j � d d l } | j t j t j � d S)zu
>>> lock = SQLiteLockFile('somefile')
>>> lock = SQLiteLockFile('somefile', threaded=False)
Nr zGcreate table locks( lock_file varchar(32), unique_name varchar(32)))r �__init__�unicode� lock_file�unique_namer
�testdb�tempfile�mkstemp�os�close�unlink�sqlite3�connect�
connection�cursor�executeZOperationalError�commit�atexit�register)
�self�pathZthreaded�timeoutr Z_fdr r �cr � r! �/sqlitelockfile.pyr s(
zSQLiteLockFile.__init__c C s� | d k r | n | j } t j � } | d k rI | d k rI | | 7} | d k r^ d } n | d k rs d } n
| d } | j j � } x2| j � s%| j d | j | j f � | j j � | j d | j f � | j � } t
| � d k r| j d | j f � | j j � q]d Sn8 | j d | j f � | j � } t
| � d k r]d S| d k r�t j � | k r�| d k r�t d | j � � n t
d | j � � t j | � q� Wd S)
Nr g�������?�
z;insert into locks (lock_file, unique_name) values (?, ?)z*select * from locks where unique_name = ?r z(delete from locks where unique_name = ?z&Timeout waiting to acquire lock for %sz%s is already locked)r �timer r � is_lockedr r
r r �fetchall�lenr r r �sleep)r r �end_time�waitr �rowsr! r! r"