Ë
    °ŒjÔ  ã                   ó  — 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Z ej                  e
«      ZdZddhZ G d„ dej                  «      Z G d„ d	«      Z G d
„ de«      Z G d„ de«      Z G d„ d«      Z G d„ d«      Zeddfd„Zy)zþ
Simplistic RPC implementation.
Exposes all functions of a Server object.

This code is for demonstration purposes only, and does not include certain
security protections. It is not meant to be run on an untrusted network or
in a production environment.
é    Ni /  Únumpyznumpy.core.multiarrayc                   ó   — e Zd Zd„ Zy)ÚRestrictedUnpicklerc                 óˆ   — |t         v rt        t        j                  |«      |«      S t	        j
                  d|›d|›d�«      ‚)Nzglobal 'Ú.z' is forbidden)Úsafe_modulesÚgetattrÚ	importlibÚimport_moduleÚpickleÚUnpicklingError)ÚselfÚmoduleÚnames      ú[/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/faiss/contrib/rpc.pyÚ
find_classzRestrictedUnpickler.find_class%   s=   € à”\Ñ!Üœ9×2Ñ2°6Ó:¸DÓAÐAä×$Ò$Ú-3²TÐ:ó
ð 	
ó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r   #   s   „ ó
r   r   c                   ó*   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zy)ÚFileSockz5wraps a socket so that it is usable by pickle/cPicklec                 ó    — || _         d| _        y )Nr   )ÚsockÚnr)r   r   s     r   Ú__init__zFileSock.__init__2   s   € ØˆŒ	Øˆ�r   c                 ó”   — d}d}|t        |«      k  r6| j                  j                  ||||z    «      }||z  }|t        |«      k  rŒ5y y )Né   r   )Úlenr   Úsend)r   ÚbufÚbsÚnsÚsents        r   ÚwritezFileSock.write6   sL   € ð ˆØˆØ”3�s“8ŠmØ—9‘9—>‘> # b¨2°©7Ð"3Ó4ˆDØ�$‰JˆBð ”3�s“8�mr   c                 ó  — | xj                   dz  c_         g }d}t        |«      |k  rO| j                  j                  ||z
  «      }|sn.|j	                  |«       |t        |«      z  }t        |«      |k  rŒOdj                  |«      S )Né   r   r   )r   r    r   ÚrecvÚappendÚjoin)r   r#   ÚbÚnbÚrbs        r   ÚreadzFileSock.read@   su   € à�Š�1‰�àˆØˆÜ�!‹f�rŠkà—‘—‘  R¡Ó(ˆBÙØØ�H‰H�RŒLØ”#�b“'‰MˆBô �!‹f�r‹kð �x‰x˜‹{Ðr   c                 óF   — t        «       }	 | j                  d«      }||z  }Œ)zmay be optimized...r(   )Úbytesr/   r    Úchr)r   ÚsÚcs      r   ÚreadlinezFileSock.readlineO   s)   € ô ‹GˆØØ—	‘	˜!“ˆAØ�‰FˆAð r   N)r   )r   r   r   Ú__doc__r   r&   r/   r5   r   r   r   r   r   /   s   „ Ù;òòóór   r   c                   ó   — e Zd Zy)Ú
ClientExitN©r   r   r   r   r   r   r8   r8   Z   ó   „ Ør   r8   c                   ó   — e Zd Zy)ÚServerExceptionNr9   r   r   r   r<   r<   ^   r:   r   r<   c                   óN   — e Zd ZdZej
                  dfd„Zd„ Zd„ Zd„ Z	d„ Z
d„ Zy	)
ÚServerzr
    server protocol. Methods from classes that subclass Server can be called
    transparently from a client
    Ú c                 óN   — || _         || _        || _        t        |«      | _        y ©N)ÚlogfÚ
log_prefixÚconnr   Úfs)r   r3   rB   rC   s       r   r   zServer.__init__h   s$   € ØˆŒ	Ø$ˆŒð ˆŒ	Ü˜1“+ˆ�r   c                 ó\   — | j                   j                  d| j                  ›d|›d�«       y )NzServer log z: Ú
)rB   r&   rC   )r   r3   s     r   Úlogz
Server.logq   s   € Ø�	‰	�Š°·³Â!ÐDÕEr   c                 ó&  — 	 t        | j                  «      j                  «       \  }}| j                  d|z  «       d}d}	 t        | |«      }	  |Ž }t$        j'                  d
«       	 t)        j*                  ||f| j                  d¬«       y# t        $ r t	        d«      ‚w xY w# t        $ r" t        d|z   «      }| j                  d«       Y Œƒw xY w# t        $ r›}dj                  t        j                  t        j                  «       d   «      «      t        |«      z   }| j                  d«       t        j                  d	| j                   «       | j                   j#                  «        Y d}~�Œ d}~ww xY w# t        $ r t	        d«      ‚w xY w)aÑ  
        Executes a single function with associated I/O.
        Protocol:
        - the arguments and results are serialized with the pickle protocol
        - client sends : (fname,args)
            fname = method name to call
            args = tuple of arguments
        - server sends result: (rid,st,ret)
            rid = request id
            st = None, or exception if there was during execution
            ret = return value or None if st!=None
        z	read argszexecuting method %sNzunknown method zunknown methodr?   é   zexception in methodé2   Úreturné   ©Úprotocolzfunction return)r   rE   ÚloadÚEOFErrorr8   rH   r	   ÚAttributeErrorÚ	Exceptionr+   Ú	tracebackÚ	format_tbÚsysÚexc_infoÚstrÚ	print_excrB   ÚflushÚLOGÚinfor   Údump)r   ÚfnameÚargsÚstÚretÚfÚes          r   Úone_functionzServer.one_functiont   sa  € ð	*Ü/°·±Ó8×=Ñ=Ó?‰MˆU�Dð 	�‰Ð&¨%Ñ0Ô1ØˆØˆð	'Ü˜˜eÓ$ˆAð
	Ù�T�(ˆCô 	�‰�Ôð	0Ü�K‰K˜˜S˜	 4§7¡7°QÖ7øô9 ò 	*Ü˜[Ó)Ð)ð	*ûô ò 	'ÜÐ 1°EÑ 9Ó:ˆBØ�H‰HÐ%Ö&ð	'ûô ò 	ð —‘œ×,Ñ,¬S¯\©\«^¸AÑ->Ó?Ó@Ä3ÀqÃ6ÑIˆBØ�H‰HÐ*Ô+Ü×Ñ  D§I¡IÔ.Ø�I‰I�O‰O×Òûð	ûô  ò 	0ÜÐ.Ó/Ð/ð	0úsB   ‚&B ÁB& ÁC Á)$E; ÂB#Â&(CÃCÃ	E8ÃBE3Å3E8Å;Fc                 ód  — | j                  d«       	 	 | j                  «        Œ# t        $ r}| j                  d|z  «       Y d}~nÕd}~wt        j                  $ r>}| j                  d|z  «       t        j                  d| j                  «       Y d}~n†d}~wt        $ r4 | j                  d«       t        j                  d| j                  «       Y nGt        $ r< t        j                  dt        j                  «       t        j                  d«       Y nw xY wt        j                  d«       y)	z2main execution loop. Loops and handles exit stateszin exec_loopzClientExit %sNzsocket error %srK   zEOF during communicationr(   zexit server)rH   rd   r8   ÚsocketÚerrorrT   rY   rB   rQ   ÚBaseExceptionrV   ÚstderrÚexitr[   r\   )r   rc   s     r   Ú	exec_loopzServer.exec_loop¤   sá   € ð 	�‰�Ô ð	ØØ×!Ñ!Ô#ð øäò 	*Ø�H‰H�_ qÑ(×)Ñ)ûÜ�|‰|ò 	/Ø�H‰HÐ&¨Ñ*Ô+Ü×Ñ  D§I¡I×.Ñ.ûÜò 	/Ø�H‰HÐ/Ô0Ü×Ñ  D§I¡IÖ.Üò 	ä×Ñ ¤C§J¡JÔ/Ü�H‰H�QŽKð	úô
 	�‰�Õs-   “% ¥	D®AÁDÁ4BÂ=DÃADÄDc                  ó   — y rA   r   )r   s    r   Úexec_loop_cleanupzServer.exec_loop_cleanupº   s   € Ør   c                 óˆ   — d}t        j                  ddt        j                  «       z  z   dz   dz   «      }|D ]  }||z  }Œ	 |S )Nr?   zFecho ============ `hostname` uptime:; uptime;echo ============ self:; z*ps -p %d -o pid,vsize,rss,%%cpu,nlwp,psr; zecho ============ run queue:;z?ps ar -o user,pid,%cpu,%mem,ni,nlwp,psr,vsz,rss,cputime,command)ÚosÚpopenÚgetpid)r   ra   rb   Úls       r   Úget_ps_statszServer.get_ps_statsÀ   s^   € ØˆÜ�H‰Hð*à:¼R¿Y¹Y»[ÑHñIð .ñ.ð Pñ	Pó
ˆó ˆAØ�1‰H‰Cð àˆ
r   N)r   r   r   r6   rV   ri   r   rH   rd   rk   rm   rs   r   r   r   r>   r>   b   s2   „ ñð
  #Ÿz™z°bó òFò.0ò` ò,ór   r>   c                   ó.   — e Zd ZdZedfd„Zd„ Zd„ Zd„ Zy)ÚClientza
    Methods of the server object can be called transparently. Exceptions are
    re-raised.
    Fc                 ó  — |rt         j                  nt         j                  }t        j                   |t         j                  «      }t        j                  d|||«       |j                  ||f«       || _        t        |«      | _	        y )Nz$connecting to %s:%d, socket type: %s)
rf   ÚAF_INET6ÚAF_INETÚSOCK_STREAMr[   r\   Úconnectr   r   rE   )r   ÚHOSTÚportÚv6Úsocktyper   s         r   r   zClient.__init__Ô   s^   € Ù&(”6—?’?¬f¯n©nˆä�}‰}˜X¤v×'9Ñ'9Ó:ˆÜ�‰Ð7¸¸tÀXÔNØ�‰�d˜D�\Ô"ØˆŒ	Ü˜4“.ˆ�r   c                 ój   — t        j                  ||f| j                  d¬«       | j                  «       S )NrM   rN   )r   r]   rE   Ú
get_result)r   r^   r_   s      r   Úgeneric_funzClient.generic_funÝ   s'   € ä�‰�U˜D�M 4§7¡7°QÕ7Ø�‰Ó Ð r   c                 ór   — t        | j                  «      j                  «       \  }}|d k7  rt        |«      ‚|S rA   )r   rE   rP   r<   )r   r`   ra   s      r   r€   zClient.get_resultâ   s4   € Ü'¨¯©Ó0×5Ñ5Ó7‰	ˆˆSØ�Š:Ü! "Ó%Ð%àˆJr   c                 ó   ‡ ‡— ˆˆ fd„S )Nc                  ó(   •— ‰j                  ‰| «      S rA   )r�   )Úxr   r   s    €€r   Ú<lambda>z$Client.__getattr__.<locals>.<lambda>ê   s   ø€ ˜$×*Ñ*¨4°Ô3r   r   )r   r   s   ``r   Ú__getattr__zClient.__getattr__é   s	   ù€ Ü3Ð3r   N)	r   r   r   r6   ÚPORTr   r�   r€   r‡   r   r   r   ru   ru   Î   s"   „ ñð
 #'¨5ó !ò!ò
ó4r   ru   Fc                 óJ  — d}|rt         j                  nt         j                  }t        j                   |t         j                  «      }|j	                  t         j
                  t         j                  d«       t        j                  d||«       |j                  ||f«       |j                  d«       t        j                  d«       |�Ht        j                  d|«       t        |d«      j                  dt        j                  «       |fz  «       	 	 |j                  «       \  }}t        j                  d
|«        | |«      }
t!        j"                  |
j$                  d«      }t        j'                  d|«       Œi# t         j                  $ r}	|	d   d	k(  rY d }	~	ŒŠ‚ d }	~	ww xY w)Nr?   r(   z
bind %s:%dé   zaccepting connectionszstoring host+port in %sÚwz%s:%d zInterrupted system callzConnected to %sr   zThread ID: %d)rf   rw   rx   ry   Ú
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRr[   r\   ÚbindÚlistenÚopenr&   ÚgethostnameÚacceptrg   Ú_threadÚstart_new_threadrk   Údebug)Únew_handlerr|   Úreport_to_filer}   r{   r~   r3   rD   Úaddrrc   ÚibsÚtids               r   Ú
run_serverrœ   í   sC  € à€DÙ"$Œv�Š¬&¯.©.€HÜ�‰�h¤× 2Ñ 2Ó3€AØ‡L�L”×"Ñ"¤F×$7Ñ$7¸Ô;ä‡H�Hˆ\˜4 Ô&Ø‡F�FˆD�$ˆ<ÔØ‡H�HˆQ„Kä‡H�HÐ$Ô%ØÐ!Ü�‰Ð*¨NÔ;Üˆ^˜SÓ!×'Ñ'¨´F×4FÑ4FÓ4HÈ$Ð3OÑ(OÔPà
ð	ØŸ™›‰JˆD�$ô 	�‰Ð" DÔ)á˜$Óˆä×&Ñ& s§}¡}°bÓ9ˆä�	‰	�/ 3Ô'ð øô �|‰|ò 	Ø�‰tÐ0Ò0ÜØûð	ús   ÄE< Å<F"ÆFÆFÆF")r6   r
   ro   r   rV   r”   rT   rf   ÚloggingÚ	getLoggerr   r[   rˆ   r   Ú	Unpicklerr   r   rS   r8   r<   r>   ru   rœ   r   r   r   Ú<module>r       s¦   ðñó Û 	Û Û 
Û Û Û Û à€g×Ñ˜Ó!€ð €ð Øð€ô	
˜&×*Ñ*ô 	
÷(ñ (ôV	�ô 	ô	�iô 	÷iñ i÷X4ñ 4ð> "&°d¸uô (r   