66from splitio .engine .strategies .strategy_optimized_mode import StrategyOptimizedMode
77from splitio .engine .strategies import Observer , Counter
88
9- import logging
10- _LOGGER = logging .getLogger (__name__ )
11-
12- _IMPRESSION_OBSERVER_CACHE_SIZE = 500000
13-
149class ImpressionsMode (Enum ):
1510 """Impressions tracking mode."""
1611
@@ -20,7 +15,7 @@ class ImpressionsMode(Enum):
2015class Manager (object ): # pylint:disable=too-few-public-methods
2116 """Impression manager."""
2217
23- def __init__ (self , mode = ImpressionsMode .OPTIMIZED , standalone = True , listener = None ):
18+ def __init__ (self , mode = ImpressionsMode .OPTIMIZED , standalone = True , listener = None , strategy = None ):
2419 """
2520 Construct a manger to track and forward impressions to the queue.
2621
@@ -33,20 +28,11 @@ def __init__(self, mode=ImpressionsMode.OPTIMIZED, standalone=True, listener=Non
3328 :param listener: Optional impressions listener that will capture all seen impressions.
3429 :type listener: splitio.client.listener.ImpressionListenerWrapper
3530 """
36- self . _observer = Observer ( _IMPRESSION_OBSERVER_CACHE_SIZE ) if standalone else None
31+
3732 self ._counter = Counter () if standalone else None
38- self ._strategy = self . get_strategy ( mode , standalone )
33+ self ._strategy = strategy
3934 self ._listener = listener
4035
41- def get_strategy (self , mode , standalone ):
42- """
43- Return a strategy object based on mode value.
44-
45- :returns: A strategy object
46- :rtype: (BaseStrategy)
47- """
48- return StrategyOptimizedMode (self ._counter , self ._observer , standalone ) if mode == ImpressionsMode .OPTIMIZED else StrategyDebugMode (self ._observer , standalone )
49-
5036 def process_impressions (self , impressions ):
5137 """
5238 Process impressions.
@@ -56,7 +42,7 @@ def process_impressions(self, impressions):
5642 :param impressions: List of impression objects with attributes
5743 :type impressions: list[tuple[splitio.models.impression.Impression, dict]]
5844 """
59- for_log , for_listener = self ._strategy .process_impressions (impressions )
45+ for_log , for_listener = self ._strategy .process_impressions (impressions , self . _counter )
6046 self ._send_impressions_to_listener (for_listener )
6147 return for_log
6248
0 commit comments