X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=server.h;h=4134638dd6fd88d5dae95d787f9bf1142d4c076c;hb=927f8b06fe3550f45c8d7b119acaa77d9b22888c;hp=7c96e780152c07005b1784d704fe1d37b4ac93ea;hpb=33ccd714ea9469b5b7d3b36bbe468ba1b0f31dfc;p=catta diff --git a/server.h b/server.h index 7c96e78..4134638 100644 --- a/server.h +++ b/server.h @@ -3,20 +3,48 @@ #include "flx.h" #include "iface.h" +#include "prioq.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; + GTimeVal time; + flxQuery query; +} flxQueryJob; + +typedef struct _flxQueryJobInstance { + flxPrioQueueNode *node; + flxQueryJob *job; + gint interface; + guchar protocol; +} flxQueryJobInstance; + +typedef struct _flxResponseJob { + gint ref; + GTimeVal time; + flxRecord response; +} flxResponseJob; + +typedef struct _flxResponseJobInstance { + flxPrioQueueNode *node; + flxResponseJob *job; + gint interface; + guchar protocol; +} flxResponseJobInstance; struct _flxServer { GMainContext *context; @@ -28,6 +56,20 @@ struct _flxServer { GHashTable *rrset_by_name; flxEntry *entries; + + flxPrioQueue *query_job_queue; + flxPrioQueue *response_job_queue; }; +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 GTimeVal *tv, 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