o
    "ifm                     @   s   d Z ddlZddlZ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 dZG dd dejZed	kr@ee dS dS )
z
A windows service wrapper for the py.execnet socketserver.

To use, run:
 python socketserverservice.py register
 net start ExecNetSocketServer
    N)get_execmodel   )socketserverExecNetSocketServerc                       sD   e Zd ZeZde ZdgZd fddZdddZdd	d
Z	  Z
S )SocketServerServicez%sEventLogreturnNc                    s8   t | jtjd t| td ddd | _	d| _
d S )NApplicationr   i  )win32evtlogutilAddSourceToRegistry_svc_display_name_servicemanager__file__super__init__
win32eventCreateEvent	hWaitStop	WAIT_TIME)selfargs	__class__ [/var/www/html/corbot_env/lib/python3.10/site-packages/execnet/script/socketserverservice.pyr      s   	


zSocketServerService.__init__c                 C   s   |  tj t| j d S )N)ReportServiceStatuswin32serviceSERVICE_STOP_PENDINGr   SetEventr   )r   r   r   r   SvcStop.   s   zSocketServerService.SvcStopc                 C   s   t dd t_t_t| jtjdtj	| j
df td| j  d}td|  td}t||}tjtj|fd	d
id}|d
 |  	 t| j| j}|tjkrUnqGt| jtjdtj	| j
df tdt  d S )Nnulwr    z	Begin: %sz:8888z&Starting py.execnet SocketServer on %sthreadloopT)targetr   kwargszEnd: %s)opensysstdoutstderrr
   ReportEventr   r   PYS_SERVICE_STARTEDEVENTLOG_INFORMATION_TYPE
_svc_name_printr   r   bind_and_listen	threadingThreadstartserver	setDaemonstartr   WaitForSingleObjectr   r   WAIT_OBJECT_0PYS_SERVICE_STOPPEDappname)r   hostport
exec_model
serversockr#   resultr   r   r   SvcDoRun2   s>   

zSocketServerService.SvcDoRun)r   N)__name__
__module____qualname__r9   r.   r   
_svc_deps_r   r   r>   __classcell__r   r   r   r   r      s    
r   __main__)__doc__r(   r1   r   r   r
   r   win32serviceutilexecnet.gateway_baser   r"   r   r9   ServiceFrameworkr   r?   HandleCommandLiner   r   r   r   <module>   s    D