
    3j                        S SK r S SKrSSKJr  \R                  r\R
                  S:X  a  S SKr\Gb  \ R                  \ R                  \ R                  /\R                  l
        \ R                  \R                  l        \ R                  /\R                  l
        \ R                  /\R                  l
        \ R                  \R                  l        \ R                  \ R                  \ R                  \ R                  \ R                  " \ R                   5      /\R"                  l
        \ R                  \R"                  l        \ R                  \ R$                  \ R                  \ R                  \ R                  \ R                  \ R                  \ R                  /\R&                  l
        \ R                  \R&                  l        \ R$                  \ R                  \ R                  \ R                  \ R                  \ R                  \ R                  /\R(                  l
        \ R                  \R(                  l        / \R*                  l
        \ R                  \ R                  \ R                  /\R,                  l
        \ R                  \R,                  l        \ R                  \ R                  /\R.                  l
        \ R                  \R.                  l        \ R                  \ R                  \ R                  /\R0                  l
        \ R                  \R0                  l        S rS
S jrS r " S S	5      rg)    N   )controlntc                     [        U [        5      (       a  U $ U R                  5       n[        R                  S:X  a  [
        R                  " U5      $ U$ )Nr   )
isinstanceintfilenoosnamemsvcrtget_osfhandle)file_objfds     Q/home/wildlama/miniconda3/lib/python3.13/site-packages/comfy_aimdo/host_buffer.py_file_handler   ;   s@    (C  		B')ww$6#>B>    c                     [         R                  [        U5      [        U 5      [        U5      [        U5      [        U5      =(       d    S [        U5      [	        U5      5      (       d  [        S5      eg )Nzhostbuf_file_reader_read failed)libhostbuf_file_reader_readr   r   boolRuntimeError)r   file_offsetsizestream
device_ptrdevice	mark_colds          r   read_file_to_devicer   C   s_    ''F\(5K(+K(8#d)S[EXTX(+JiJ J <==Jr   c                  ,    [         R                  5         g )N)r   hostbuf_file_reader_cleanup r   r   cleanup_file_readerr"   J   s    ##%r   c                   T    \ rS rSrSS jrS rSS jrSS jrS rS r	SS jr
S	 rS
rg)
HostBufferN   c                 N   [        U5      n[        U[        U5      5      nSU l        [        S[        U5      5      U l        [        R                  U R                  U[        U5      5      U l        U R                  (       d  [        S5      eU(       a  U R                  U5        g g )Nr   zHostBuffer allocation failed)
r   maxr   prewarmr   hostbuf_allocater   _ptrr   extend)selfr   r(   max_grow_sizer   max_mmap_sizes         r   __init__HostBuffer.__init__O   sz    4yD#m"45	1c'l+((}d9oV	yy=>>KK r   c                 h    [         R                  U R                  5      nU(       a  [        U5      $ S$ )Nr   )r   hostbuf_get_raw_addressr*   r   r,   ptrs     r   get_raw_addressHostBuffer.get_raw_addressZ   s'    ))$))4s3x%A%r   c           	      n   [        U5      n[        R                  " S5      n[        R	                  U R
                  U[        U5      [        U5      [        R                  " U5      5      nU =R                  UR                  -  sl        U(       d  U(       a  [        S5      eU(       a  [        U5      $ S$ )Nr   zHostBuffer.extend failed)r   ctypesc_int64r   hostbuf_extendr*   r   byrefr   valuer   )r,   r   
reallocateregister
size_deltar4   s         r   r+   HostBuffer.extend^   s    4y^^A&
  D$z2BDN!'j!9;		Z%%%	t9::s3x%A%r   c                 n   Uc  SO
[        U5      n[        R                  U R                  U[	        U5      [        U5      [        U5      [        U5      [        U5      =(       d    S [        U5      5      (       d  [        S5      e[        U R                  [        U5      [        U5      -   5      U l        g )Nz!HostBuffer.read_file_slice failed)r   r   hostbuf_read_file_slicer*   r   r   r'   r   )r,   r   r   r   offsetr   r   r   s           r   read_file_sliceHostBuffer.read_file_sliceh   s    ~3v;**499fl8>T+.{+;SYF+.v;+>$JQ Q BCC		3v;T#:;	r   c                     [         R                  U R                  [        U5      [        U5      5      (       d  [	        S5      eg )NzHostBuffer.register failed)r   hostbuf_registerr*   r   r   )r,   rD   r   s      r   r>   HostBuffer.registerp   s5    ##DIIs6{CIFF;<< Gr   c                 v    [         R                  U R                  [        U5      5      (       d  [	        S5      eg )NzHostBuffer.unregister failed)r   hostbuf_unregisterr*   r   r   )r,   rD   s     r   
unregisterHostBuffer.unregistert   s.    %%diiV===>> >r   c                     [         R                  U R                  [        U5      [	        U5      5      (       d  [        S5      e[        U5      U l        g )NzHostBuffer.truncate failed)r   hostbuf_truncater*   r   r   r   r   )r,   r   do_unregisters      r   truncateHostBuffer.truncatex   s;    ##DIIs4y$}:MNN;<<I	r   c                 t    [        U SS 5      nU(       a$  [        b  [        R                  U5        S U l        g g )Nr*   )getattrr   hostbuf_freer*   r3   s     r   __del__HostBuffer.__del__}   s2    dFD)  %DI r   )r*   r(   r   N)r   r   T)FT)r   r   r   rB   T)__name__
__module____qualname____firstlineno__r/   r5   r+   rE   r>   rL   rQ   rV   __static_attributes__r!   r   r   r$   r$   N   s*    	&&<=?
r   r$   rX   )r8   r
    r   r   r   r   c_uint64c_boolr)   argtypesc_void_prestyperU   r2   POINTERr9   r:   c_intrC   r   r    rH   rK   rO   r   r   r"   r$   r!   r   r   <module>rf      sT    	 kk77d??%+__foov}}$UC!#)??C !' 1C,2OO+<C(*0//C'#)??FOOV]]#)==&..2P#RC!'C 		,C( +1--C' 	-C  ) ,2==C  (/1C##,%+__foov$WC!#)==C '-&HC#%+]]C"%+__foov}}$UC!#)==C ?>&4 4r   