4 typedef struct _flxQueryJob flxQueryJob;
5 typedef struct _flxResponseJob flxResponseJob;
6 typedef struct _flxPacketScheduler flxPacketScheduler;
7 typedef struct _flxKnownAnswer flxKnownAnswer;
9 #include "timeeventq.h"
15 flxPacketScheduler *scheduler;
16 flxTimeEvent *time_event;
20 FLX_LLIST_FIELDS(flxQueryJob, jobs);
23 struct _flxResponseJob {
24 flxPacketScheduler *scheduler;
25 flxTimeEvent *time_event;
28 gboolean address_valid;
31 FLX_LLIST_FIELDS(flxResponseJob, jobs);
34 struct _flxKnownAnswer {
35 flxPacketScheduler *scheduler;
38 FLX_LLIST_FIELDS(flxKnownAnswer, known_answer);
41 struct _flxPacketScheduler {
44 flxInterface *interface;
46 FLX_LLIST_HEAD(flxQueryJob, query_jobs);
47 FLX_LLIST_HEAD(flxResponseJob, response_jobs);
48 FLX_LLIST_HEAD(flxKnownAnswer, known_answers);
51 flxPacketScheduler *flx_packet_scheduler_new(flxServer *server, flxInterface *i);
52 void flx_packet_scheduler_free(flxPacketScheduler *s);
54 void flx_packet_scheduler_post_query(flxPacketScheduler *s, flxKey *key, gboolean immediately);
55 void flx_packet_scheduler_post_response(flxPacketScheduler *s, const flxAddress *a, flxRecord *record, gboolean immediately);
57 void flx_packet_scheduler_incoming_query(flxPacketScheduler *s, flxKey *key);
58 void flx_packet_scheduler_incoming_response(flxPacketScheduler *s, flxRecord *record);
59 void flx_packet_scheduler_incoming_known_answer(flxPacketScheduler *s, flxRecord *record, const flxAddress *a);
61 void flx_packet_scheduler_flush_responses(flxPacketScheduler *s);