*{RZ d dl Z d dlZd dlmZ d dlmZmZmZmZm Z m Z mZ d dlm Z mZmZmZ d dlZd dlmZ d dlmZ G d de Z G d de Z G d d e ZdS ) N)ABCMeta) IPV4LENGTH IPV6LENGTHIPv4AddressIPv4NetworkIPv6AddressIPv6Network ip_network)IteratorListOptionalUnion)Signal)IPc d e Zd Z e Z e Z e Z e Zd ZdS )SourceInterfacec " K t )z":rtype: iterable[(ip, expiration)]NotImplementedErrorselfs P/opt/imunify360/venv/lib/python3.11/site-packages/im360/utils/tree_cache/core.py fetch_allzSourceInterface.fetch_all" s !### N) __name__ __module____qualname__r addeddeletedclearedupdatedr r r r r sU FHHE fhhG fhhG fhhG$ $ $ $ $r r ) metaclassc x e Zd Zd Zd Zdeeeee e f fdZdeeeee e f fdZd Z dS )TreeCacheInterfacec " K t )zICheck if the cache contains specified ip. :type ip: str r r ips r containszTreeCacheInterface.contains( "###r c " K t )dCheck if the cache contains exactly specified ip, not parent subnet. :type ip: str r r' s r contains_exactlyz#TreeCacheInterface.contains_exactly/ r* r ipsc " K t )z'Returns ips that is presented in cache.r r r. s r filter_containedz#TreeCacheInterface.filter_contained6 r* r c " K t )z+Returns ips that is NOT presented in cache.r r0 s r filter_not_containedz'TreeCacheInterface.filter_not_contained= r* r c t )* re-fill on the next call r r s r resetzTreeCacheInterface.resetD s "###r N)r r r r) r- r r r r r r r1 r3 r6 r" r r r% r% ' s $ $ $$ $ $$ %[+{JK L$ $ $ $$ %[+{JK L$ $ $ $$ $ $ $ $r r% c h e Zd ZddZd Zd Zd Zd Zd Zd Z e d eee eef fd Zed eee eef fd Zed Zd Zd Zd Zdeeee eef fdZdeeee eef fdZd edee fdZd Zed ZdedefdZ d Z!dS ) TreeCache c L || _ || _ d| _ d| _ d| _ |j | j | |j | j | |j | j | |j | j | dS )z:type source: SourceInterfacer NF)_source_full_sync_period _last_sync_tree_expiredr connect _on_addedr _on_deletedr _on_clearedr! _on_updated)r sourcefull_sync_periods r __init__zTreeCache.__init__L s !1 T^V444t/888t/888t/88888r c r | j d S | j t j | | d S N)r> insertr adopt_to_ipvX_networkr senderr( expirations r rA zTreeCache._on_added\ s8 :F "2266 CCCCCr c | j d S | j t j | d S # t $ r Y d S w xY wrI )r> deleter rK KeyError)r rM r( s r rB zTreeCache._on_deleteda s] :F Jb6r::;;;;; DD s ,9 AAc B t j t | _ d S rI )pytriciaPyTriciar r> )r rM s r rC zTreeCache._on_clearedj s &z22 r c 4 | ||| d S rI )rA rL s r rD zTreeCache._on_updatedm s vr:.....r c K t j t | _ | j }| j d {V D ]-\ }}| t j | | .d S rI ) rS rT r r> r; r rJ r rK )r treer( rN s r _init_treezTreeCache._init_treep s &z22 z$(L$:$:$<$<<<<<<<