diff options
author | Lennart Poettering <lennart@poettering.net> | 2004-12-25 18:45:50 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2004-12-25 18:45:50 +0000 |
commit | 4de18a7015ed77eac277bee669d4c8d9dae60b89 (patch) | |
tree | b02ff8e829c4de83257a7843e9b19ac2d69f078b /server.h | |
parent | c77f4231ed850b90b9b6f337727e19b63418426f (diff) |
add prioq abstract data type
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@5 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'server.h')
-rw-r--r-- | server.h | 54 |
1 files changed, 49 insertions, 5 deletions
@@ -4,19 +4,48 @@ #include "flx.h" #include "iface.h" +struct _flxEntry; +typedef struct _flxEntry flxEntry; struct _flxEntry { flxRecord rr; gint id; gint interface; + guchar protocol; - int unique; + gboolean unique; - struct _flxEntry *next, *prev; - struct _flxEntry *next_by_name, *prev_by_name; - struct _flxEntry *next_by_id, *prev_by_id; + flxEntry *next, *prev; + flxEntry *next_by_name, *prev_by_name; + flxEntry *next_by_id, *prev_by_id; }; -typedef struct _flxEntry flxEntry; +typedef struct _flxQueryJob { + gint ref; + flxQuery query; +} flxQueryJob; + +struct _flxQueryJobInstance; +typedef struct _flxQueryJobInstance flxQueryJobInstance; +struct _flxQueryJobInstance { + flxQueryJob *job; + gint interface; + guchar protocol; + flxQueryJobInstance *next, *prev; +}; + +typedef struct _flxResponseJob { + gint ref; + flxRecord response; +} flxResponseJob; + +struct _flxResponseJobInstance; +typedef struct _flxResponseJobInstance flxResponseJobInstance; +struct _flxResponseJobInstance { + flxResponseJob *job; + gint interface; + guchar protocol; + flxResponseJob *next, *prev; +}; struct _flxServer { GMainContext *context; @@ -28,6 +57,21 @@ struct _flxServer { GHashTable *rrset_by_name; flxEntry *entries; + + flxResponseJobInstance *first_response_job, *last_response_job; + flxQueryJobInstance *first_query_job, *last_query_job; }; +flxQueryJob* flx_query_job_new(void); +flxQueryJob* flx_query_job_ref(flxQueryJob *job); +void flx_query_job_unref(flxQueryJob *job); + +void flx_server_post_query_job(flxServer *s, gint interface, guchar protocol, const flxQuery *q); +void flx_server_drop_query_job(flxServer *s, gint interface, guchar protocol, const flxQuery *q); + +void flx_server_remove_query_job_instance(flxServer *s, flxQueryJobInstance *i); + +gboolean flx_query_equal(const flxQuery *a, const flxQuery *b); + + #endif |