diff --git a/quorums/quorum_system.py b/quorums/quorum_system.py index aad2a02..d99ba1a 100644 --- a/quorums/quorum_system.py +++ b/quorums/quorum_system.py @@ -117,6 +117,13 @@ class QuorumSystem(Generic[T]): sigma = self.strategy(read_fraction, write_fraction, f) return sigma.load(read_fraction, write_fraction) + def capacity(self, + read_fraction: Optional[Distribution] = None, + write_fraction: Optional[Distribution] = None, + f: int = 0) \ + -> float: + return 1 / self.load(read_fraction, write_fraction, f) + def _load_optimal_strategy(self, read_quorums: List[Set[T]], write_quorums: List[Set[T]], diff --git a/quorums/strategy.py b/quorums/strategy.py index cab5109..df46834 100644 --- a/quorums/strategy.py +++ b/quorums/strategy.py @@ -16,6 +16,12 @@ class Strategy(Generic[T]): -> float: raise NotImplementedError + def capacity(self, + read_fraction: Optional[Distribution] = None, + write_fraction: Optional[Distribution] = None) \ + -> float: + return 1 / self.load(read_fraction, write_fraction) + def get_read_quorum(self) -> Set[T]: raise NotImplementedError