]> git.meshlink.io Git - catta/blob - psched.h
* add todo list
[catta] / psched.h
1 #ifndef foopschedhfoo
2 #define foopschedhfoo
3
4 typedef struct _flxQueryJob flxQueryJob;
5 typedef struct _flxResponseJob flxResponseJob;
6 typedef struct _flxPacketScheduler flxPacketScheduler;
7
8 #include "timeeventq.h"
9 #include "rr.h"
10 #include "llist.h"
11 #include "iface.h"
12
13 struct _flxQueryJob {
14     flxPacketScheduler *scheduler;
15     flxTimeEvent *time_event;
16     flxKey *key;
17     gboolean done;
18     GTimeVal delivery;
19     FLX_LLIST_FIELDS(flxQueryJob, jobs);
20 };
21
22 struct _flxResponseJob {
23     flxPacketScheduler *scheduler;
24     flxTimeEvent *time_event;
25     flxRecord *record;
26     gboolean done;
27     GTimeVal delivery;
28     FLX_LLIST_FIELDS(flxResponseJob, jobs);
29 };
30
31 struct _flxPacketScheduler {
32     flxServer *server;
33     
34     flxInterface *interface;
35
36     FLX_LLIST_HEAD(flxQueryJob, query_jobs);
37     FLX_LLIST_HEAD(flxResponseJob, response_jobs);
38 };
39
40 flxPacketScheduler *flx_packet_scheduler_new(flxServer *server, flxInterface *i);
41 void flx_packet_scheduler_free(flxPacketScheduler *s);
42
43 void flx_packet_scheduler_post_query(flxPacketScheduler *s, flxKey *key, gboolean immediately);
44 void flx_packet_scheduler_post_response(flxPacketScheduler *s, flxRecord *record, gboolean immediately);
45
46 void flx_packet_scheduler_incoming_query(flxPacketScheduler *s, flxKey *key);
47 void flx_packet_scheduler_incoming_response(flxPacketScheduler *s, flxRecord *record);
48
49 void flx_packet_scheduler_flush_responses(flxPacketScheduler *s);
50
51 #endif