Lines Matching refs:qj

80     AvahiQueryJob *qj;  in job_new()  local
85 if (!(qj = avahi_new(AvahiQueryJob, 1))) { in job_new()
90 qj->scheduler = s; in job_new()
91 qj->key = avahi_key_ref(key); in job_new()
92 qj->time_event = NULL; in job_new()
93 qj->n_posted = 1; in job_new()
94 qj->id = s->next_id++; in job_new()
96 if ((qj->done = done)) in job_new()
97 AVAHI_LLIST_PREPEND(AvahiQueryJob, jobs, s->history, qj); in job_new()
99 AVAHI_LLIST_PREPEND(AvahiQueryJob, jobs, s->jobs, qj); in job_new()
101 return qj; in job_new()
104 static void job_free(AvahiQueryScheduler *s, AvahiQueryJob *qj) { in job_free() argument
106 assert(qj); in job_free()
108 if (qj->time_event) in job_free()
109 avahi_time_event_free(qj->time_event); in job_free()
111 if (qj->done) in job_free()
112 AVAHI_LLIST_REMOVE(AvahiQueryJob, jobs, s->history, qj); in job_free()
114 AVAHI_LLIST_REMOVE(AvahiQueryJob, jobs, s->jobs, qj); in job_free()
116 avahi_key_unref(qj->key); in job_free()
117 avahi_free(qj); in job_free()
122 static void job_set_elapse_time(AvahiQueryScheduler *s, AvahiQueryJob *qj, unsigned msec, unsigned … in job_set_elapse_time() argument
126 assert(qj); in job_set_elapse_time()
130 if (qj->time_event) in job_set_elapse_time()
131 avahi_time_event_update(qj->time_event, &tv); in job_set_elapse_time()
133 qj->time_event = avahi_time_event_new(s->time_event_queue, &tv, elapse_callback, qj); in job_set_elapse_time()
136 static void job_mark_done(AvahiQueryScheduler *s, AvahiQueryJob *qj) { in job_mark_done() argument
138 assert(qj); in job_mark_done()
140 assert(!qj->done); in job_mark_done()
142 AVAHI_LLIST_REMOVE(AvahiQueryJob, jobs, s->jobs, qj); in job_mark_done()
143 AVAHI_LLIST_PREPEND(AvahiQueryJob, jobs, s->history, qj); in job_mark_done()
145 qj->done = 1; in job_mark_done()
147 job_set_elapse_time(s, qj, AVAHI_QUERY_HISTORY_MSEC, 0); in job_mark_done()
148 gettimeofday(&qj->delivery, NULL); in job_mark_done()
212 static int packet_add_query_job(AvahiQueryScheduler *s, AvahiDnsPacket *p, AvahiQueryJob *qj) { in packet_add_query_job() argument
215 assert(qj); in packet_add_query_job()
217 if (!avahi_dns_packet_append_key(p, qj->key, 0)) in packet_add_query_job()
221 avahi_cache_walk(s->interface->cache, qj->key, known_answer_walk_callback, s); in packet_add_query_job()
223 job_mark_done(s, qj); in packet_add_query_job()
274 AvahiQueryJob *qj = data; in elapse_callback() local
280 assert(qj); in elapse_callback()
281 s = qj->scheduler; in elapse_callback()
283 if (qj->done) { in elapse_callback()
285 job_free(s, qj); in elapse_callback()
294 b = packet_add_query_job(s, p, qj); in elapse_callback()
314 AvahiQueryJob *qj; in find_scheduled_job() local
319 for (qj = s->jobs; qj; qj = qj->jobs_next) { in find_scheduled_job()
320 assert(!qj->done); in find_scheduled_job()
322 if (avahi_key_equal(qj->key, key)) in find_scheduled_job()
323 return qj; in find_scheduled_job()
330 AvahiQueryJob *qj; in find_history_job() local
335 for (qj = s->history; qj; qj = qj->jobs_next) { in find_history_job()
336 assert(qj->done); in find_history_job()
338 if (avahi_key_equal(qj->key, key)) { in find_history_job()
341 if (avahi_age(&qj->delivery) > AVAHI_QUERY_HISTORY_MSEC*1000) { in find_history_job()
343 job_free(s, qj); in find_history_job()
347 return qj; in find_history_job()
356 AvahiQueryJob *qj; in avahi_query_scheduler_post() local
361 if ((qj = find_history_job(s, key))) in avahi_query_scheduler_post()
366 if ((qj = find_scheduled_job(s, key))) { in avahi_query_scheduler_post()
369 if (avahi_timeval_compare(&tv, &qj->delivery) < 0) { in avahi_query_scheduler_post()
372 qj->delivery = tv; in avahi_query_scheduler_post()
373 avahi_time_event_update(qj->time_event, &qj->delivery); in avahi_query_scheduler_post()
376 qj->n_posted++; in avahi_query_scheduler_post()
380 if (!(qj = job_new(s, key, 0))) in avahi_query_scheduler_post()
383 qj->delivery = tv; in avahi_query_scheduler_post()
384qj->time_event = avahi_time_event_new(s->time_event_queue, &qj->delivery, elapse_callback, qj); in avahi_query_scheduler_post()
388 *ret_id = qj->id; in avahi_query_scheduler_post()
394 AvahiQueryJob *qj; in avahi_query_scheduler_incoming() local
403 if ((qj = find_scheduled_job(s, key))) { in avahi_query_scheduler_incoming()
404 job_mark_done(s, qj); in avahi_query_scheduler_incoming()
410 if (!(qj = find_history_job(s, key))) in avahi_query_scheduler_incoming()
411 if (!(qj = job_new(s, key, 1))) in avahi_query_scheduler_incoming()
414 gettimeofday(&qj->delivery, NULL); in avahi_query_scheduler_incoming()
415 job_set_elapse_time(s, qj, AVAHI_QUERY_HISTORY_MSEC, 0); in avahi_query_scheduler_incoming()
419 AvahiQueryJob *qj; in avahi_query_scheduler_withdraw_by_id() local
427 for (qj = s->jobs; qj; qj = qj->jobs_next) { in avahi_query_scheduler_withdraw_by_id()
428 assert(!qj->done); in avahi_query_scheduler_withdraw_by_id()
430 if (qj->id == id) { in avahi_query_scheduler_withdraw_by_id()
433 assert(qj->n_posted >= 1); in avahi_query_scheduler_withdraw_by_id()
435 if (--qj->n_posted <= 0) { in avahi_query_scheduler_withdraw_by_id()
443 job_free(s, qj); in avahi_query_scheduler_withdraw_by_id()