Introduce and use generic_filter_pre_select().
[paraslash.git] / filter.h
index 15bfaf8cdb0c2533c463fe8272d21e5528b80dbd..b6901813a5defcd0a8dcee27c3dd97b91034a0d7 100644 (file)
--- a/filter.h
+++ b/filter.h
@@ -32,6 +32,9 @@ struct filter_node {
        struct list_head callbacks;
        /** A pointer to the configuration of this instance. */
        void *conf;
+       struct btr_node *btrn;
+       struct task task;
+       size_t min_iqs;
 };
 
 /** Describes one running instance of a chain of filters */
@@ -191,6 +194,10 @@ struct filter {
 
        /** The help texts for this filter. */
        struct ggo_help help;
+
+       void (*pre_select)(struct sched *s, struct task *t);
+       void (*post_select)(struct sched *s, struct task *t);
+       btr_command_handler execute;
 };
 
 void close_filters(struct filter_chain *fc);
@@ -198,6 +205,8 @@ void filter_init(void);
 int check_filter_arg(char *filter_arg, void **conf);
 void filter_post_select(__a_unused struct sched *s, struct task *t);
 void print_filter_helps(int detailed);
+int prepare_filter_node(struct filter_node *fn);
+void generic_filter_pre_select(struct sched *s, struct task *t);
 
 static inline void write_int16_host_endian(char *buf, int val)
 {