diff options
author | Lennart Poettering <lennart@poettering.net> | 2005-03-23 21:20:57 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2005-03-23 21:20:57 +0000 |
commit | c18626ad35cdf94edbff196070ccbb6ae825abd0 (patch) | |
tree | 0ae412b0f982aadabe6de5a7e2733a997b96ce9c /psched.h | |
parent | 54247ce93dc6f048c0ffea546f454653ce0e25a8 (diff) |
add packet scheduler
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@14 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
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 |