Lines Matching refs:user
17 struct replicator_user *user;
107 struct replicator_user *user = (struct replicator_user *)item;
109 user->popped = TRUE;
110 replicator_queue_remove(queue, &user);
128 void replicator_user_ref(struct replicator_user *user)
130 i_assert(user->refcount > 0);
131 user->refcount++;
136 struct replicator_user *user = *_user;
138 i_assert(user->refcount > 0);
140 if (--user->refcount > 0)
143 i_free(user->state);
144 i_free(user->username);
145 i_free(user);
159 struct replicator_user *user;
161 user = replicator_queue_lookup(queue, username);
162 if (user == NULL) {
163 user = i_new(struct replicator_user, 1);
164 user->refcount = 1;
165 user->username = i_strdup(username);
166 hash_table_insert(queue->user_hash, user->username, user);
168 if (user->priority > priority) {
169 /* user already has a higher priority than this */
170 return user;
172 if (!user->popped)
173 priorityq_remove(queue->user_queue, &user->item);
175 user->priority = priority;
176 user->last_update = ioloop_time;
178 if (!user->popped)
179 priorityq_add(queue->user_queue, &user->item);
180 return user;
187 struct replicator_user *user;
189 user = replicator_queue_add_int(queue, username, priority);
192 return user;
200 struct replicator_user *user;
203 user = replicator_queue_add_int(queue, username,
207 lookup->user = user;
210 lookup->wait_for_next_push = user->popped;
219 struct replicator_user *user = *_user;
222 if (!user->popped)
223 priorityq_remove(queue->user_queue, &user->item);
224 hash_table_remove(queue->user_hash, user->username);
225 replicator_user_unref(&user);
232 struct replicator_user *user,
237 if (user->priority != REPLICATION_PRIORITY_NONE)
240 if (user->last_sync_failed) {
241 next_sync = user->last_fast_sync +
244 next_sync = user->last_full_sync + queue->full_sync_interval;
258 struct replicator_user *user;
266 user = (struct replicator_user *)item;
267 if (!replicator_queue_want_sync_now(queue, user, next_secs_r)) {
268 /* we don't want to sync the user yet */
271 priorityq_remove(queue->user_queue, &user->item);
272 user->popped = TRUE;
273 return user;
278 struct replicator_user *user)
283 bool success = !user->last_sync_failed;
288 if (lookups[i].user != user)
291 /* another sync request came while user was being
293 i_assert(user->priority == REPLICATION_PRIORITY_SYNC);
307 struct replicator_user *user)
309 i_assert(user->popped);
311 priorityq_add(queue->user_queue, &user->item);
312 user->popped = FALSE;
315 replicator_queue_handle_sync_lookups(queue, user);
324 struct replicator_user *user, tmp_user;
326 /* <user> <priority> <last update> <last fast sync> <last full sync>
352 user = hash_table_lookup(queue->user_hash, username);
353 if (user != NULL) {
354 if (user->last_update > tmp_user.last_update) {
358 if (user->last_update == tmp_user.last_update) {
361 if (user->priority > tmp_user.priority)
365 user = replicator_queue_add(queue, username,
367 user->last_update = tmp_user.last_update;
368 user->last_fast_sync = tmp_user.last_fast_sync;
369 user->last_full_sync = tmp_user.last_full_sync;
370 user->last_successful_sync = tmp_user.last_successful_sync;
371 user->last_sync_failed = tmp_user.last_sync_failed;
372 i_free(user->state);
373 user->state = i_strdup(state);
411 replicator_queue_export_user(struct replicator_user *user, string_t *str)
413 str_append_tabescaped(str, user->username);
414 str_printfa(str, "\t%d\t%lld\t%lld\t%lld\t%d\t", (int)user->priority,
415 (long long)user->last_update,
416 (long long)user->last_fast_sync,
417 (long long)user->last_full_sync,
418 user->last_sync_failed ? 1 : 0);
419 if (user->state != NULL)
420 str_append_tabescaped(str, user->state);
421 str_printfa(str, "\t%lld\n", (long long)user->last_successful_sync);
427 struct replicator_user *user;
442 while ((user = replicator_queue_iter_next(iter)) != NULL) {
444 replicator_queue_export_user(user, str);
471 struct replicator_user *user;
475 &username, &user))
477 return user;