#include "flx.h"
#include "iface.h"
+#include "prioq.h"
struct _flxEntry;
typedef struct _flxEntry flxEntry;
typedef struct _flxQueryJob {
gint ref;
+ GTimeVal time;
flxQuery query;
} flxQueryJob;
-struct _flxQueryJobInstance;
-typedef struct _flxQueryJobInstance flxQueryJobInstance;
-struct _flxQueryJobInstance {
+typedef struct _flxQueryJobInstance {
+ flxPrioQueueNode *node;
flxQueryJob *job;
gint interface;
guchar protocol;
- flxQueryJobInstance *next, *prev;
-};
+} flxQueryJobInstance;
typedef struct _flxResponseJob {
gint ref;
+ GTimeVal time;
flxRecord response;
} flxResponseJob;
-struct _flxResponseJobInstance;
-typedef struct _flxResponseJobInstance flxResponseJobInstance;
-struct _flxResponseJobInstance {
+typedef struct _flxResponseJobInstance {
+ flxPrioQueueNode *node;
flxResponseJob *job;
gint interface;
guchar protocol;
- flxResponseJob *next, *prev;
-};
+} flxResponseJobInstance;
struct _flxServer {
GMainContext *context;
flxEntry *entries;
- flxResponseJobInstance *first_response_job, *last_response_job;
- flxQueryJobInstance *first_query_job, *last_query_job;
+ 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 flxQuery *q);
+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