summaryrefslogtreecommitdiffstats
path: root/server.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-12-25 18:45:50 +0000
committerLennart Poettering <lennart@poettering.net>2004-12-25 18:45:50 +0000
commit4de18a7015ed77eac277bee669d4c8d9dae60b89 (patch)
treeb02ff8e829c4de83257a7843e9b19ac2d69f078b /server.h
parentc77f4231ed850b90b9b6f337727e19b63418426f (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.h54
1 files changed, 49 insertions, 5 deletions
diff --git a/server.h b/server.h
index 7c96e78..f1a15fc 100644
--- a/server.h
+++ b/server.h
@@ -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