
    io                         S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  Sr " S S\R                  5      r\S	:X  a  \R                   " \5        gg)
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                   T   ^  \ rS rSr\rS\-  rS/rSU 4S jjrSS jr	SS jr
SrU =r$ )	SocketServerService   z%sEventLogc                    > [         R                  " U R                  [        R                  S5        [
        TU ]  U5        [        R                  " S SSS 5      U l	        SU l
        g )NApplicationr   i  )win32evtlogutilAddSourceToRegistry_svc_display_name_servicemanager__file__super__init__
win32eventCreateEvent	hWaitStop	WAIT_TIME)selfargs	__class__s     a/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/execnet/script/socketserverservice.pyr   SocketServerService.__init__   sT     	++##^%<%<m	
 	#//aDA    c                     U R                  [        R                  5        [        R                  " U R
                  5        g )N)ReportServiceStatuswin32serviceSERVICE_STOP_PENDINGr   SetEventr   )r   s    r   SvcStopSocketServerService.SvcStop.   s(      !B!BCDNN+r   c                 @   [        SS5      =[        l        [        l        [        R
                  " U R                  [        R                  S[        R                  U R                  S45        [        SU R                  -  5        Sn[        SU-  5        [        S5      n[        R                  " X5      n[        R                   " [        R"                  U4S	S
0S9nUR%                  S
5        UR'                  5          [(        R*                  " U R,                  U R.                  5      nU[(        R0                  :X  a  OMB  [        R
                  " U R                  [        R2                  S[        R                  U R                  S45        [        S[4        -  5        g )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)   results         r   SvcDoRunSocketServerService.SvcDoRun2   sP    #'uc"22
SZ 	####..44__b!	
 	kD33346AB"8,
!11(G
!!++:-QU
 	 33DNNDNNSF111  	####..44__b!	
 	i'!"r   )r   r   )returnN)__name__
__module____qualname____firstlineno__r?   r4   r   
_svc_deps_r   r#   rD   __static_attributes____classcell__)r   s   @r   r   r      s-    JJ ,(# (#r   r   __main__)__doc__r.   r7   r   r   r   r    win32serviceutilexecnet.gateway_baser   r(   r   r?   ServiceFrameworkr   rG   HandleCommandLine r   r   <module>rU      s`           . 
A#*;; A#H z&&':; r   