U
    be                     @   s   d dl mZ G dd dZdS )    )
murmur3_32c                   @   s8   e Zd ZdZddefddZdd Zdd	 Zd
d ZdS )RendezvousHashz
    Implements the Highest Random Weight (HRW) hashing algorithm most
    commonly referred to as rendezvous hashing.

    Originally developed as part of python-clandestined.

    Copyright (c) 2014 Ernest W. Durbin III
    Nr   c                    s.   g | _ | _|dk	r|| _  fdd| _dS )z
        Constructor.
        Nc                    s
    | S N )xhash_functionseedr   ^/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pymemcache/client/rendezvous.py<lambda>       z)RendezvousHash.__init__.<locals>.<lambda>)nodesr	   r   )selfr   r	   r   r   r   r
   __init__   s
    zRendezvousHash.__init__c                 C   s   || j kr| j | d S r   )r   appendr   noder   r   r
   add_node   s    
zRendezvousHash.add_nodec                 C   s(   || j kr| j | ntd| d S )NzNo such node %s to remove)r   remove
ValueErrorr   r   r   r
   remove_node   s    
zRendezvousHash.remove_nodec                 C   s`   d}d }| j D ]L}| | d| }||kr:|| }}q||kr|tt|t| }}q|S )N-)r   r   maxstr)r   keyZ
high_scorewinnerr   Zscorer   r   r
   get_node"   s    
zRendezvousHash.get_node)	__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r
   r      s
   	
r   N)Zpymemcache.client.murmur3r   r   r   r   r   r
   <module>   s   