X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=psched.h;h=9866f2f9a0464781151365c421d2d7c7a2e7729d;hb=72e2daefd371691e385bcd61741ee696391941d8;hp=7290265c1d957b09881f2a7beca8496524a438b3;hpb=cfc653d0fd2f58ef3f4b5ecb285d5beb5bfaacfb;p=catta diff --git a/psched.h b/psched.h index 7290265..9866f2f 100644 --- a/psched.h +++ b/psched.h @@ -5,6 +5,7 @@ typedef struct _flxQueryJob flxQueryJob; typedef struct _flxResponseJob flxResponseJob; typedef struct _flxPacketScheduler flxPacketScheduler; typedef struct _flxKnownAnswer flxKnownAnswer; +typedef struct _flxProbeJob flxProbeJob; #include "timeeventq.h" #include "rr.h" @@ -28,6 +29,7 @@ struct _flxResponseJob { gboolean address_valid; gboolean done; GTimeVal delivery; + gboolean flush_cache; FLX_LLIST_FIELDS(flxResponseJob, jobs); }; @@ -38,6 +40,17 @@ struct _flxKnownAnswer { FLX_LLIST_FIELDS(flxKnownAnswer, known_answer); }; +struct _flxProbeJob { + flxPacketScheduler *scheduler; + flxTimeEvent *time_event; + flxRecord *record; + + gboolean chosen; /* Use for packet assembling */ + GTimeVal delivery; + + FLX_LLIST_FIELDS(flxProbeJob, jobs); +}; + struct _flxPacketScheduler { flxServer *server; @@ -46,13 +59,15 @@ struct _flxPacketScheduler { FLX_LLIST_HEAD(flxQueryJob, query_jobs); FLX_LLIST_HEAD(flxResponseJob, response_jobs); FLX_LLIST_HEAD(flxKnownAnswer, known_answers); + FLX_LLIST_HEAD(flxProbeJob, probe_jobs); }; flxPacketScheduler *flx_packet_scheduler_new(flxServer *server, flxInterface *i); void flx_packet_scheduler_free(flxPacketScheduler *s); void flx_packet_scheduler_post_query(flxPacketScheduler *s, flxKey *key, gboolean immediately); -void flx_packet_scheduler_post_response(flxPacketScheduler *s, const flxAddress *a, flxRecord *record, gboolean immediately); +void flx_packet_scheduler_post_response(flxPacketScheduler *s, const flxAddress *a, flxRecord *record, gboolean flush_cache, gboolean immediately); +void flx_packet_scheduler_post_probe(flxPacketScheduler *s, flxRecord *record, gboolean immediately); void flx_packet_scheduler_incoming_query(flxPacketScheduler *s, flxKey *key); void flx_packet_scheduler_incoming_response(flxPacketScheduler *s, flxRecord *record);