]> git.meshlink.io Git - catta/blobdiff - server.h
some work
[catta] / server.h
index f1a15fc9efc4e8ed2c4535f37ceeb2a439f51b81..4134638dd6fd88d5dae95d787f9bf1142d4c076c 100644 (file)
--- a/server.h
+++ b/server.h
@@ -3,6 +3,7 @@
 
 #include "flx.h"
 #include "iface.h"
+#include "prioq.h"
 
 struct _flxEntry;
 typedef struct _flxEntry flxEntry;
@@ -21,31 +22,29 @@ struct _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;
@@ -58,20 +57,19 @@ struct _flxServer {
 
     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