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;
29 FLX_LLIST_FIELDS(flxResponseJob, jobs);
32 struct _flxKnownAnswer {
33 flxPacketScheduler *scheduler;
36 FLX_LLIST_FIELDS(flxKnownAnswer, known_answer);
39 struct _flxPacketScheduler {
42 flxInterface *interface;
44 FLX_LLIST_HEAD(flxQueryJob, query_jobs);
45 FLX_LLIST_HEAD(flxResponseJob, response_jobs);
46 FLX_LLIST_HEAD(flxKnownAnswer, known_answers);
49 flxPacketScheduler *flx_packet_scheduler_new(flxServer *server, flxInterface *i);
50 void flx_packet_scheduler_free(flxPacketScheduler *s);
52 void flx_packet_scheduler_post_query(flxPacketScheduler *s, flxKey *key, gboolean immediately);
53 void flx_packet_scheduler_post_response(flxPacketScheduler *s, flxRecord *record, gboolean immediately);
55 void flx_packet_scheduler_incoming_query(flxPacketScheduler *s, flxKey *key);
56 void flx_packet_scheduler_incoming_response(flxPacketScheduler *s, flxRecord *record);
58 void flx_packet_scheduler_flush_responses(flxPacketScheduler *s);