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