
    ,i                         d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
  G d d      Z G d d	e      Z G d
 de      Z G d de      Zy)    )List)Redis)EventListenerInterfaceOnCommandsFailEvent)SyncDatabase)FailureDetectorc                   l    e Zd ZdZdedefdZedefd       Zedefd       Zed        Z	ed	        Z
y
)ActiveDatabaseChangedz?
    Event fired when an active database has been changed.
    old_databasenew_databasec                 <    || _         || _        || _        || _        y N)_old_database_new_database_command_executor_kwargs)selfr   r   command_executorkwargss        X/var/www/html/langgraph-service/venv/lib/python3.12/site-packages/redis/multidb/event.py__init__zActiveDatabaseChanged.__init__   s#     *)!1    returnc                     | j                   S r   )r   r   s    r   r   z"ActiveDatabaseChanged.old_database       !!!r   c                     | j                   S r   )r   r   s    r   r   z"ActiveDatabaseChanged.new_database   r   r   c                     | j                   S r   )r   r   s    r   r   z&ActiveDatabaseChanged.command_executor"   s    %%%r   c                     | j                   S r   )r   r   s    r   r   zActiveDatabaseChanged.kwargs&   s    ||r   N)__name__
__module____qualname____doc__r   r   propertyr   r   r   r    r   r   r
   r
   	   s|    
"
 #
 "l " " "l " " & &  r   r
   c                       e Zd ZdZdefdZy)"ResubscribeOnActiveDatabaseChangedzO
    Re-subscribe the currently active pub / sub to a new active database.
    eventc                 `   |j                   j                  }| |j                  j                  j                  di |j
                  }|j                  |_        |j                  |_        |j                  |_        |j                  d        ||j                   _        |j                          y y )Nr%   )r   active_pubsubr   clientpubsubr   channelspatternsshard_channels
on_connectclose)r   r(   
old_pubsub
new_pubsubs       r   listenz)ResubscribeOnActiveDatabaseChanged.listen0   s    ++99
!9++2299IELLIJ","5"5J","5"5J(2(A(AJ%!!$'3=E""0 "r   Nr    r!   r"   r#   r
   r4   r%   r   r   r'   r'   +   s    1 r   r'   c                       e Zd ZdZdefdZy)&CloseConnectionOnActiveDatabaseChangedz6
    Close connection to the old active database.
    r(   c                 X   |j                   j                  j                          t        |j                   j                  t              r]|j                   j                  j
                  j                          |j                   j                  j
                  j                          y |j                   j                  j                  j                  j                         D ]J  }|j                  j
                  j                          |j                  j
                  j                          L y r   )r   r+   r1   
isinstancer   connection_pool'update_active_connections_for_reconnect
disconnectnodes_managernodes_cachevaluesredis_connection)r   r(   nodes      r   r4   z-CloseConnectionOnActiveDatabaseChanged.listenC   s    !!'')e((//7%%55]]_%%55@@B**11??KKRRT C%%55]]_%%55@@BCr   Nr5   r%   r   r   r7   r7   >   s    	C1 	Cr   r7   c                   2    e Zd ZdZdee   fdZdeddfdZy)RegisterCommandFailureza
    Event listener that registers command failures and passing it to the failure detectors.
    failure_detectorsc                     || _         y r   )_failure_detectors)r   rD   s     r   r   zRegisterCommandFailure.__init__T   s
    "3r   r(   r   Nc                 r    | j                   D ](  }|j                  |j                  |j                         * y r   )rF   register_failure	exceptioncommands)r   r(   failure_detectors      r   r4   zRegisterCommandFailure.listenW   s2     $ 7 7 	O--eoou~~N	Or   )	r    r!   r"   r#   r   r   r   r   r4   r%   r   r   rC   rC   O   s/    4$*? 4O/ OD Or   rC   N)typingr   redis.clientr   redis.eventr   r   redis.multidb.databaser   redis.multidb.failure_detectorr   r
   r'   r7   rC   r%   r   r   <module>rQ      sJ      C / : D)? &C-C C"
O3 
Or   