a
    &ñ»jm  ã                   @   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 )
z‘
A windows service wrapper for the py.execnet socketserver.

To use, run:
 python socketserverservice.py register
 net start ExecNetSocketServer
é    N)Úget_execmodelé   )ÚsocketserverZExecNetSocketServerc                       sP   e Zd ZeZde ZdgZddœ‡ fdd„Zddœdd„Zddœd	d
„Z	‡  Z
S )ÚSocketServerServicez%sZEventLogN)Úreturnc                    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__Ú
win32eventZCreateEventÚ	hWaitStopÚ	WAIT_TIME)ÚselfÚargs©Ú	__class__© úHE:\soccer\ml_env\Lib\site-packages\execnet/script/socketserverservice.pyr      s    	
ÿ
zSocketServerService.__init__c                 C   s   |   tj¡ t | j¡ d S )N)ZReportServiceStatusÚwin32serviceZSERVICE_STOP_PENDINGr   Z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rŒqªqŒt | 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   ZPYS_SERVICE_STARTEDÚEVENTLOG_INFORMATION_TYPEÚ
_svc_name_Úprintr   r   Zbind_and_listenÚ	threadingÚThreadZstartserverÚ	setDaemonÚstartr   ÚWaitForSingleObjectr   r   ÚWAIT_OBJECT_0ZPYS_SERVICE_STOPPEDÚappname)r   ÚhostportZ
exec_modelZ
serversockr   Úresultr   r   r   ÚSvcDoRun2   s:    ûÿ

ûzSocketServerService.SvcDoRun)Ú__name__Ú
__module__Ú__qualname__r/   r'   r
   Z
_svc_deps_r   r   r2   Ú__classcell__r   r   r   r   r      s   r   Ú__main__)Ú__doc__r"   r)   r   r   r   r   Zwin32serviceutilZexecnet.gateway_baser   r   r   r/   ZServiceFrameworkr   r3   ZHandleCommandLiner   r   r   r   Ú<module>   s   D