1 """
2 Manage pool of IDs.
3 """
4
5 import itertools
6
8 _newIds = None
9 _freeIds = None
10
12 """
13 Initializes a new pool, counting from start
14 """
15 self._freeIds = []
16 self._newIds = itertools.count(start)
17
19 """
20 Take out an ID from the pool, and wait for it to be
21 put back again (see L{putBack})
22 @return: A new ID from the pool.
23 """
24 if self._freeIds:
25 return self._freeIds.pop()
26 else:
27 return self._newIds.next()
28
30 """
31 Puts back a previously popped ID.
32 """
33 self._freeIds.append(id)
34