@@ -107,6 +107,7 @@ type leaseStoreImpl struct {
107107 leases map [string ]Lease
108108 sumWants float64
109109 sumHas float64
110+ count int64
110111}
111112
112113// New returns a fresh LeaseStore implementation.
@@ -118,29 +119,17 @@ func NewLeaseStore(id string) LeaseStore {
118119}
119120
120121func (store * leaseStoreImpl ) Count () int64 {
121- var subclients int64
122- for _ , lease := range store .leases {
123- subclients += lease .Subclients
124- }
125- return subclients
122+ return store .count
126123}
127124
128125func (store * leaseStoreImpl ) SumWants () float64 {
129126 return store .sumWants
130127}
131128
132- func (store * leaseStoreImpl ) modifySumWants (diff float64 ) {
133- store .sumWants += diff
134- }
135-
136129func (store * leaseStoreImpl ) SumHas () float64 {
137130 return store .sumHas
138131}
139132
140- func (store * leaseStoreImpl ) modifySumHas (diff float64 ) {
141- store .sumHas += diff
142- }
143-
144133func (store * leaseStoreImpl ) HasClient (client string ) bool {
145134 _ , ok := store .leases [client ]
146135 return ok
@@ -155,16 +144,18 @@ func (store *leaseStoreImpl) Release(client string) {
155144 if ! ok {
156145 return
157146 }
158- store .modifySumWants (- lease .Wants )
159- store .modifySumHas (- lease .Has )
147+ store .sumWants -= lease .Wants
148+ store .sumHas -= lease .Has
149+ store .count -= lease .Subclients
160150 delete (store .leases , client )
161151}
162152
163153func (store * leaseStoreImpl ) Assign (client string , leaseLength , refreshInterval time.Duration , has , wants float64 , subclients int64 ) Lease {
164154 lease := store .leases [client ]
165155
166- store .modifySumHas (has - lease .Has )
167- store .modifySumWants (wants - lease .Wants )
156+ store .sumHas += has - lease .Has
157+ store .sumWants += wants - lease .Wants
158+ store .count += subclients - lease .Subclients
168159
169160 lease .Has , lease .Wants = has , wants
170161 lease .Expiry = time .Now ().Add (leaseLength )
0 commit comments