
    )j!                     F   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZ ddlmZ  ej        e          Z eej                            dd                    Z eej                            dd                    Z G d d	          Zd
 ZdS )    N)
STATUS_BAD_REQUESTSTATUS_NOT_FOUND	STATUS_OKSTATUS_SERVICE_UNAVAILABLEProcessManagerProxyMappingManagerTXTSessionManagerextractSessionIdfilterResponsevalidateKeySet   )_root_handlerWSLINK_LAUNCHER_GET0WSLINK_LAUNCHER_DELETEc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )LauncherResourcec                    || _         || _        t          |d         d                   | _        |d         d         | _        t          |t          |d         d                             | _        t          |          | _	        d S )Nconfigurationtimeoutfields
proxy_file)
_options_configinttime_to_waitfield_filterr	   r   session_managerr   process_manager)selfoptionsconfigs      Z/DATA/AppData/hermes/venv/lib/python3.11/site-packages/wslink/backends/aiohttp/launcher.py__init__zLauncherResource.__init__(   s~     7	 BCC"?3H=-*6/+B<+PQQ 
  
  .f55    c                 :    t                               d           d S )Nz4Server factory shutting down. Stopping all processes)loggerwarning)r    s    r#   __del__zLauncherResource.__del__2   s    MNNNNNr%   c                 n  K   |                                  d {V }t          |dgd          st          j        ddit                    S | j                                        }|D ]6}| j                            |           | j        	                    |           7| j        
                    |          }|st          j        ddit                    S | j                            |          }|s(d|d          }t          j        d|it                    S |                     ||           d {V S )	NapplicationzLaunch requesterrorzThe request is not completestatusz%All the resources are currently takenz$The process did not properly start. cmd)jsonr   aiohttp_webjson_responser   r   listEndedProcessr   deleteSessionstopProcesscreateSessionr   startProcess_waitForReady)r    requestpayload
id_to_freeidsessionprocerr_msgs           r#   handle_postzLauncherResource.handle_post9   s     &&&&&& g8HII 	,78AS   
 )::<<
 	1 	1B ..r222 ,,R0000 &44W==  	,AB1    #0099 	MWU^MMG,'"+E    ''999999999r%   c                   K   t           j                                         }d}	 | j                            ||          rK| j        }|d         |d         v rg | j        d}t          j        t          ||          t                    S t           j                                         |z
  }|	                                | j
        k    rbd|d<   | j                            |d                    | j                            |d                    t          j        dd	it                    S t          j        d
           d {V  |d
z  }')Nr   Tsecretr/   r-   startTimedOutr<   r,   zASession did not start before timeout expired. Check session logs.r   )datetimenowr   isReadyr   r1   r2   r   r   total_secondsr   r   r4   r5   r   asynciosleep)r    r=   _
start_timecount
filterkeyselapsed_times          r#   r8   zLauncherResource._waitForReadya   si     &**,,
	#++GU;; !.
8$66!?4#4!?h!?J"0"7J77	    $,0022Z?L))++d.??? ,0($2274=AAA$00???"0!d 6	    -"""""""""QJE7	r%   c                   K   t          |          }|s9d}t                              |           t          j        d|it
                    S t                              d|           | j                            |          }|s<d| }t                              |           t          j        d|it
                    S t          j        t          || j
                  t                    S )Nzid not provided in GET requestr,   r-   zGET request received for id: %sNo session with id: )r
   r'   r,   r1   r2   r   infor   
getSessionr   r   r   r    r9   r<   messager=   s        r#   
handle_getzLauncherResource.handle_get   s      g&& 	6GLL!!!,'"+=    	5r:::&11"55 	1R11GLL!!!,'"+=   
 (7D$566y
 
 
 	
r%   c                 \  K   t          |          }|s9d}t                              |           t          j        d|it
                    S t                              d|           | j                            |          }|s<d| }t                              |           t          j        d|it                    S | j        
                    |           | j                            |           d| }t                              |           t          j        |t                    S )Nz!id not provided in DELETE requestr,   r-   z"DELETE request received for id: %srP   zDeleted session with id: )r
   r'   r,   r1   r2   r   rQ   r   rR   r   r4   r   r5   r   rS   s        r#   handle_deletezLauncherResource.handle_delete   s5     g&& 	9GLL!!!,'"+=    	8"===&11"55 	1R11GLL!!!,'"+;   
 	**2...((,,,2b22G(CCCCr%   N)	__name__
__module____qualname__r$   r)   r@   r8   rU   rW    r%   r#   r   r   '   sx        6 6 6O O O": ": ":P  J
 
 
:D D D D Dr%   r   c                 
   t          |d         d                   }t          |d         d                   }t          |d         d                   }t          |d         d                   }t          |d         d                   }|t          j        z   dz   }d}t	          j        |d	
          }	|	                    t          j                   |	                    t	          j	        |                     t	          j
        d                              |	           | j        rt	          j        t          j                  }
|
                    t          j                   t	          j	        |          }|
                    |           t	          j
        d                              |
           t#          j                    }t'          | |          }|                    d          sd| d}t#          j        ||j                  g}t.          r0|                    t#          j        |dz   |j                             t6          r0|                    t#          j        |dz   |j                             |                    |           t?          |          dk    rJ|j         !                    ddtD                     |                    t#          j#        d|          g           t#          j$        |||           d S )Nr   log_dircontentendpointhostportzlauncherLog.logz.%(asctime)s:%(levelname)s:%(name)s:%(message)sw)modewslink/z{id}r   GET)r`   ra   )%strr   osseploggingFileHandlersetLevelDEBUGsetFormatter	Formatter	getLogger
addHandlerdebugStreamHandlersysstdoutINFOr1   Applicationr   
startswithpostr@   
ENABLE_GETappendgetrU   ENABLE_DELETEdeleterW   
add_routeslenrouter	add_router   staticrun_app)r!   r"   r]   r^   r_   r`   ra   logFileName
formattingfhconsole	formatterweb_applauncher_resourceroutess                  r#   startWebServerr      s    &))455G&))455G6/*:677Hvo&v.//Dvo&v.//D BF"%66KAJ		[s	3	3	3BKKOOG%j11222h**2...} 8'
33&&&%j11	Y'''(##..w777%''G(&99s## #"x??? 	#4#@AAF  Xkoh&79J9UVVWWW 
x&02C2QRR	
 	
 	
 v
7||a  ];;;K.sG<<=>>>d666666r%   )rH   rD   rj   rh   rt   aiohttp.webwebr1   wslink.launcherr   r   r   r   r   r   r	   r
   r   r    r   rp   rX   r'   r   environr|   rz   r}   r   r   r[   r%   r#   <module>r      sv      				 



 ! ! ! ! ! !                             		8	$	$ S 5s;;<<
BJNN#;SAABBWD WD WD WD WD WD WD WD~17 17 17 17 17r%   