diff options
Diffstat (limited to 'psched.h')
-rw-r--r-- | psched.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/psched.h b/psched.h new file mode 100644 index 0000000..90b67db --- /dev/null +++ b/psched.h @@ -0,0 +1,48 @@ +#ifndef foopschedhfoo +#define foopschedhfoo + +typedef struct _flxQueryJob flxQueryJob; +typedef struct _flxResponseJob flxResponseJob; +typedef struct _flxPacketScheduler flxPacketScheduler; + +#include "timeeventq.h" +#include "rr.h" +#include "llist.h" +#include "iface.h" + +struct _flxQueryJob { + flxPacketScheduler *scheduler; + flxTimeEvent *time_event; + flxKey *key; + gboolean done; + FLX_LLIST_FIELDS(flxQueryJob, jobs); +}; + +struct _flxResponseJob { + flxPacketScheduler *scheduler; + flxTimeEvent *time_event; + flxRecord *record; + gboolean done; + FLX_LLIST_FIELDS(flxResponseJob, jobs); +}; + +struct _flxPacketScheduler { + flxServer *server; + + flxInterface *interface; + guchar protocol; + + FLX_LLIST_HEAD(flxQueryJob, query_jobs); + FLX_LLIST_HEAD(flxResponseJob, response_jobs); +}; + +flxPacketScheduler *flx_packet_scheduler_new(flxServer *server, flxInterface *i, guchar protocol); +void flx_packet_scheduler_free(flxPacketScheduler *s); + +void flx_packet_scheduler_post_query(flxPacketScheduler *s, flxKey *key); +void flx_packet_scheduler_post_response(flxPacketScheduler *s, flxRecord *record); + +void flx_packet_scheduler_drop_query(flxPacketScheduler *s, flxKey *key); +void flx_packet_scheduler_drop_response(flxPacketScheduler *s, flxRecord *record); + +#endif |