Source code for reip.stores.customer

from ..interface import Source
from reip.util import text


[docs]class Customer(Source): '''A Source object to read from a :py:class:`reip.stores.producer.Producer` ''' def __init__(self, source, index, store_id, **kw): self.source = source self.id = index self.store_id = store_id super().__init__(**kw) def __str__(self): return '<{}[{}] queued={} {} of \n{}>'.format( self.__class__.__name__, self.id, len(self), self.source.readers[self.id], text.indent(self.source)) def __len__(self): return self.source.head.counter - self.cursor.counter
[docs] def next(self): '''Increment this cursor.''' if len(self): self.cursor.counter += 1
def _get(self): return self.store.get(self.cursor.pos) @property def cursor(self): '''This customer's reader cursor. It marks the index of the data within the Producer's Store.''' return self.source.readers[self.id] @property def store(self): '''Links to the corresponding store from the Producer. This will vary depending on the configuration across Tasks. ''' return self.source.stores[self.store_id]