51 lines
973 B
Python
51 lines
973 B
Python
from abc import ABC, abstractmethod
|
|
from typing import Any, List, Tuple
|
|
|
|
|
|
class BasePrefixCache(ABC):
|
|
"""Cache can be indexed by either rid or key."""
|
|
|
|
@abstractmethod
|
|
def reset(self):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def match_prefix(self, **kwargs) -> Tuple[List[int], int]:
|
|
pass
|
|
|
|
@abstractmethod
|
|
def insert(self, **kwargs):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def cache_finished_req(self, **kwargs):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def cache_unfinished_req(self, **kwargs):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def evict(self, num_tokens: int):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def inc_lock_ref(self, node: Any):
|
|
pass
|
|
|
|
@abstractmethod
|
|
def dec_lock_ref(self, node: Any):
|
|
pass
|
|
|
|
def evictable_size(self):
|
|
return 0
|
|
|
|
def protected_size(self):
|
|
return 0
|
|
|
|
def total_size(self):
|
|
raise NotImplementedError()
|
|
|
|
def pretty_print(self):
|
|
raise NotImplementedError()
|