
    q	h[                     *   S SK r S SKrS SKrS SKJr  S SKrS SKrSSKJ	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JrJrJr  SSKJr  SSKJrJr  SSKJr  \" 5       r\R:                  " \R<                  5        S	 r\" 5       r \RB                  " S\RD                  " \RF                  5      \RH                  5      r%\%\RL                  \RN                  \RN                  /\ RP                  l)        \RD                  " \RT                  5      \RH                  \RD                  " \RD                  " \RT                  5      5      \RD                  " \RH                  5      /\ RV                  l)        \RX                  \ RV                  l-        \RX                  /\ R\                  l)        \RL                  \ R\                  l-        / \ R^                  l)        S\ R^                  l-        S r0 " S
 S5      r1\" S5      r2 " S S\\2   5      r3\RB                  " S\RD                  " \RF                  5      \RH                  5      S\RD                  " \RF                  5      S\RH                  SS4S j5       r4S\Rj                  Rl                  S\\7   4S jr8 " S S5      r9g)    N)	ExitStack   )__version__)GenericListOptionalTypeVar)ffi_pb2)Queueclassproperty)loggerc                  n   [         R                  R                  SS5      R                  5       n U (       a  [        R
                  " U 5      $ [        R                  " 5       S:X  a  SnOZ[        R                  " 5       S:X  a  SnO>[        R                  " 5       S:X  a  SnO"[        S	[        R                  " 5        S
35      e[        R                  R                  S5      U-  n[        R                  R                  U5      n[        R                  U5      n[        R
                  " [        U5      5      $ )NLIVEKIT_LIB_PATH Linuxzliblivekit_ffi.soDarwinzliblivekit_ffi.dylibWindowszlivekit_ffi.dllz"no ffi library found for platform z@.                 Set LIVEKIT_LIB_PATH to specify a the lib pathzlivekit.rtc.resources)osenvirongetstripctypesCDLLplatformsystem	Exception	importlib	resourcesfilesas_file_resource_filesenter_contextstr)libpathlibnameresctxpaths        I/var/www/html/env/lib/python3.13/site-packages/livekit/rtc/_ffi_client.pyget_ffi_libr*   %   s    jjnn/4::<G{{7##G#%		h	&(		i	'#01B0C D? @
 	

 


#
#$;
<w
FC



%
%c
*C((-D;;s4y!!    c                   \    \ rS rSrS\SS4S jrS r\S\4S j5       r	SS jr
S\4S	 jrS
rg)	FfiHandleZ   handlereturnNc                     Xl         SU l        g )NF)r/   	_disposed)selfr/   s     r)   __init__FfiHandle.__init__[   s    r+   c                 $    U R                  5         g N)disposer3   s    r)   __del__FfiHandle.__del___   s    r+   c                     U R                   $ r7   )r2   r9   s    r)   disposedFfiHandle.disposedb   s    ~~r+   c                     U R                   [        :w  aT  U R                  (       dB  SU l        [        R	                  [
        R                  " U R                   5      5      (       d   eg g g )NT)r/   INVALID_HANDLEr2   ffi_liblivekit_ffi_drop_handler   c_uint64r9   s    r)   r8   FfiHandle.disposef   sH    ;;.(!DN226??4;;3OPPPP 2@(r+   c                 "    SU R                    S3$ )Nz
FfiHandle())r/   r9   s    r)   __repr__FfiHandle.__repr__k   s    DKK=**r+   )r2   r/   r0   N)__name__
__module____qualname____firstlineno__intr4   r:   propertyboolr=   r8   r#   rG   __static_attributes__ r+   r)   r-   r-   Z   sG    s t  $  Q
+# +r+   r-   Tc                   ~    \ rS rSrSS jrS\SS4S jrSS\\R                     S\
\   4S jjrS	\
\   SS4S
 jrSrg)FfiQueuer   r0   Nc                 F    [         R                  " 5       U l        / U l        g r7   )	threadingRLock_lock_subscribersr9   s    r)   r4   FfiQueue.__init__s   s    __&
NPr+   itemc                    U R                      U R                   H"  u  p# UR                  UR                  U5        M$     S S S 5        g ! [         a"  n[
        R                  " SU5         S nAMV  S nAff = f! , (       d  f       g = f)Nzerror putting to queue: %s)rZ   r[   call_soon_threadsafe
put_nowaitr   r   error)r3   r]   queueloopes        r)   putFfiQueue.putw   sn    ZZ#00B--e.>.>E  1 Z ! B LL!=qAAB	 Zs3   A8A	A8	
A5A0*A80A55A88
Brc   c                     U R                      [        [           " 5       nU=(       d    [        R                  " 5       nU R
                  R                  X!45        UsS S S 5        $ ! , (       d  f       g = fr7   )rZ   r   rS   asyncioget_event_loopr[   append)r3   rc   rb   s      r)   	subscribeFfiQueue.subscribe   sJ    ZZ!HJE37113D$$e]3	 ZZs   AA%%
A3rb   c                     U R                      [        U R                  5       H*  u  nu  p4X1:X  d  M  U R                  R                  U5          O   S S S 5        g ! , (       d  f       g = fr7   )rZ   	enumerater[   pop)r3   rb   iq_s        r)   unsubscribeFfiQueue.unsubscribe   sJ    ZZ&t'8'89	6A:%%))!, : ZZs   !AA
A()rZ   r[   rI   r7   )rJ   rK   rL   rM   r4   rS   re   r   rh   AbstractEventLoopr   rk   rs   rQ   rR   r+   r)   rU   rU   r   sX    QB Bd Bhw'@'@A USTX q d r+   rU   data_ptrdata_lenr0   c           	         [         R                  " U [        U5      5      n[        R                  " 5       nUR                  U5        UR                  S5      nUS:X  Ga	  UR                  R                   H  n[        UR                  5      n[        R                  R                  SS5      R                  5       R                  5       nUS;   nU[         R"                  :X  a9  U(       d2  UR$                  S:X  d   UR$                  R'                  S5      (       a  M  Uc  M  [(        R*                  " USUR$                  UR,                  UR.                  UR0                  5        M     g US	:X  ag  [3        S
UR4                  R0                  [6        R8                  SS9  [        R:                  " [        R<                  " 5       [>        R@                  5        g [B        RD                  RF                  RI                  U5        g )NmessagelogsLIVEKIT_RTC_DEBUGr   )true1	libwebrtclivekitz%s:%s:%s - %spaniczFFI Panic: T)fileflush)%r   	string_atrN   	proto_ffiFfiEventParseFromString
WhichOneofrz   recordsto_python_levellevelr   r   r   r   lowerloggingDEBUGtarget
startswithr   loglinemodule_pathry   printr   sysstderrkillgetpidsignalSIGTERM	FfiClientinstancerb   re   )	rv   rw   
event_dataeventwhichrecordr   	debug_env	rtc_debugs	            r)   ffi_event_callbackr      se   
 !!(CM:J E	*%Y'Ejj((F#FLL1E

':B?EEGMMOI!]2I%i==K/6==3K3KI3V3V 

#MMKK&&NN )( 		'	mU[[00szzN
		V^^,  'r+   r   c                    U [         R                  R                  :X  a  [        R                  $ U [         R                  R
                  :X  a  [        R                  $ U [         R                  R                  :X  a  [        R                  $ U [         R                  R                  :X  a  [        R                  $ U [         R                  R                  :X  a   g r7   )r   LogLevel	LOG_ERRORr   ERRORLOG_WARNWARNLOG_INFOINFO	LOG_DEBUGr   	LOG_TRACE)r   s    r)   r   r      s    	"",,,}}	)$$--	-||	)$$--	-||	)$$..	.}}	)$$..	. 	r+   c                       \ rS rSr% Sr\S    \S'   \SS j5       rSS jr	\
S\\R                     4S j5       rS\R                  S\R                   4S	 jrS
rg)r      N	_instancer0   c                 R    U R                   c  [        5       U l         U R                   $ r7   )r   r   )clss    r)   r   FfiClient.instance   s    == %KCM}}r+   c                    [         R                  " 5       U l        [        [        R
                     " 5       U l        [        R                  [        SS[        R                  " S5      5        [        R                  S 5       ng )NTs   pythonasciic                  ,    [         R                  5         g r7   )rA   livekit_ffi_disposerR   r+   r)   _dispose_lk_ffi+FfiClient.__init__.<locals>._dispose_lk_ffi   s    '')r+   )rX   rY   rZ   rU   r   r   _queuerA   livekit_ffi_initializer   r   encodeatexitregister)r3   r   s     r)   r4   FfiClient.__init__   s_    __&
y1124&&i1C1CG1L	
 
	* 
	*r+   c                     U R                   $ r7   )r   r9   s    r)   rb   FfiClient.queue   s    {{r+   reqc                    UR                  5       n[        U5      n[        R                  U-  " U6 n[        R                  " [        R                  5      " 5       n[        R
                  " 5       n[        R                  XC[        R                  " U5      [        R                  " U5      5      nU[        :w  d   e[        R                  " XVR                  5      n[        R                  " 5       n	U	R                  U5        [        U5        U	$ r7   )SerializeToStringlenr   c_ubytePOINTERc_size_trA   livekit_ffi_requestbyrefr@   r   valuer   FfiResponser   r-   )
r3   r   
proto_data	proto_lendataresp_ptrresp_lenr/   	resp_dataresps
             r)   requestFfiClient.request   s    **,

O	*Z8>>&..13??$,,V\\(3V\\(5K
 '''$$X~~>	$$&Y'&r+   )rZ   r   )r0   r   rI   )rJ   rK   rL   rM   r   r   __annotations__r   r   r4   rO   rU   r   r   rb   
FfiRequestr   r   rQ   rR   r+   r)   r   r      sm    '+Ix$+ 

* x	 2 23  9// I4I4I r+   r   ):r   rh   r   
contextlibr   r   importlib.resourcesr   versionr   r   r   r   r   rX   typingr   r   r   r	   _protor
   r   _utilsr   r   r   r   r!   r   closer*   rA   	CFUNCTYPEr   c_uint8r   
ffi_cb_fncc_boolc_char_pr   argtypesr   r   rC   restyperB   r   r@   r-   rS   rU   r   r   	ValueTyperN   r   r   rR   r+   r)   <module>r      s     
        	    3 3 ( ( + %% &"0 -dFNN6>>$BFOOT
 
MM
OO
OO	+   ' NN6>>"
OO
NN6>>&..12
NN6??#	(   $ '-oo   #,2OO+<   (*0--   ' (*   $&*   #+ +* CLwqz > $v~~6H%(nnV^^,%(oo%( 
%( I%(P9--77 HSM $* *r+   