1 """Find an available uidNumber/gidNumber/other similar number."""
2
3 from ldaptor.protocols import pureldap
4
6 - def __init__(self, makeAGuess, min=None, max=None):
7 self.makeAGuess=makeAGuess
8 self.min=min
9 if self.min is None:
10 self.min=0
11 self.max=max
12
14 d=self.makeAGuess(self.min)
15 d.addCallback(self._nextGuess, self.min)
16 return d
17
19 if found:
20 self.min=lastGuess
21 else:
22 self.max=lastGuess
23
24 if self.max==self.min \
25 or self.max==self.min+1:
26 return self.max
27
28 max=self.max
29 if max is None:
30 max=self.min+1000
31
32 guess=(max+self.min)/2
33 d=self.makeAGuess(guess)
34 d.addCallback(self._nextGuess, guess)
35 return d
36
38 - def __init__(self, ldapObject, numberType):
39 self.numberType=numberType
40 self.ldapObject=ldapObject
41
50
55