3
O6b                 @   s   d Z ddlZddlZddlZddlZddlZdZejje	Z
ejd dk rTdd Zndd Zdd	 Zejd
kreeddZdd Znldd Zdd Zdd Zedkreedryej  W n ek
r   Y nX eeejdd  ejd dS )zSupport for spawning a daemon process.

PyMongo only attempts to spawn the mongocryptd daemon process when automatic
client-side field level encryption is enabled. See
:ref:`automatic-client-side-encryption` for more info.
    N
      c             C   sh   ddl m} | | }d}xH| j }|dk	r0|S ||  }|dkrFdS t|d |d}tj| qW dS )z,Implement wait timeout support for Python 2.r   )timegMb@?N   g      ?)Zpymongo.monotonicr   pollminsleep)popentimeout_timedeadlinedelay
returncode	remaining r   M/var/www/html/sandeepIITI/myenv/lib/python3.6/site-packages/pymongo/daemon.py_popen_wait#   s    

r   c             C   s(   y| j |dS  tjk
r"   dS X dS )z,Implement wait timeout support for Python 3.)r
   N)wait
subprocessTimeoutExpired)r	   r
   r   r   r   r   6   s    c             C   s   | dk	rd| _ dS )zpSilence Popen's ResourceWarning.

    Note this should only be used if the process was created as a daemon.
    Nr   )r   )r	   r   r   r   _silence_resource_warning?   s    
r   win32ZDETACHED_PROCESS   c             C   s|   y8t tjd"}tj| t|||d}t| W dQ R X W n> tk
rv } z"tj	d| d |f t
dd W Y dd}~X nX dS )z!Spawn a daemon process (Windows).zr+b)creationflagsstdinstderrstdoutNz?Failed to start %s: is it on your $PATH?
Original exception: %sr   r   )
stacklevel)openosdevnullr   Popen_DETACHED_PROCESSr   FileNotFoundErrorwarningswarnRuntimeWarning)argsr    r	   excr   r   r   _spawn_daemonQ   s    r)   c             C   sp   y,t tjd}tj| d|||dS Q R X W n> tk
rj } z"tjd| d |f tdd W Y dd}~X nX dS )	z,Spawn the process and silence stdout/stderr.zr+bT)	close_fdsr   r   r   Nz?Failed to start %s: is it on your $PATH?
Original exception: %sr   r   )r   )	r   r   r    r   r!   r#   r$   r%   r&   )r'   r    r(   r   r   r   _spawnj   s    r+   c             C   s0   t jtg}|j|  tj|dd}t|t dS )z7Spawn a daemon process using a double subprocess.Popen.T)r*   N)sys
executable
_THIS_FILEextendr   r!   r   _WAIT_TIMEOUT)r'   Zspawner_argsZ	temp_procr   r   r   _spawn_daemon_double_popenw   s    

r1   c             C   s   t jrt|  nt|  dS )zSpawn a daemon process (Unix).N)r,   r-   r1   r+   )r'   r   r   r   r)      s    

__main__setsid   )__doc__r   r   r,   r   r$   r0   pathrealpath__file__r.   version_infor   r   platformgetattrr"   r)   r+   r1   __name__hasattrr3   OSErrorargv_exitr   r   r   r   <module>   s2   
	



