Source code for eventsourcing.infrastructure.integersequencegenerators.base

from abc import abstractmethod
from threading import Lock


[docs]class AbstractIntegerSequenceGenerator(object): def __iter__(self): return self @abstractmethod def __next__(self): """ Returns the next item in the container. """
[docs] def next(self): """ Python 2.7 version of the iterator protocol. """ return self.__next__()
[docs]class SimpleIntegerSequenceGenerator(AbstractIntegerSequenceGenerator): def __init__(self, i=0): self.i = i self.lock = Lock() def __next__(self): self.lock.acquire() i = self.i self.i += 1 self.lock.release() return i