]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - filter_common.c
Introduce btr_node_status() and add btr support to the file writer.
[paraslash.git] / filter_common.c
index a27c2d303ad28d823ae9af20eeb4878f9300cad1..acd84d5cd6332e3d4a2c5507ecc661f1822ba0e1 100644 (file)
@@ -276,38 +276,14 @@ void print_filter_helps(int detailed)
 
 }
 
-/** 640K ought to be enough for everybody ;) */
-#define FILTER_MAX_PENDING (640 * 1024)
-
-int prepare_filter_node(struct filter_node *fn)
-{
-       struct btr_node *btrn = fn->btrn;
-       size_t iqs;
-
-       if (btr_eof(btrn))
-               return -E_FC_EOF;
-       if (btr_bytes_pending(btrn) > FILTER_MAX_PENDING)
-               return 0;
-       iqs = btr_get_input_queue_size(btrn);
-       if (iqs < fn->min_iqs && !btr_no_parent(btrn))
-               return 0;
-       assert(iqs != 0);
-       /* avoid "buffer too small" errors from the decoder */
-       btr_merge(btrn, fn->min_iqs);
-       return 1;
-}
-
 void generic_filter_pre_select(struct sched *s, struct task *t)
 {
        struct filter_node *fn = container_of(t, struct filter_node, task);
-       size_t iqs = btr_get_input_queue_size(fn->btrn);
 
        t->error = 0;
-       if (iqs < fn->min_iqs)
-               return;
-       if (btr_bytes_pending(fn->btrn) > FILTER_MAX_PENDING)
-               return; /* FIXME, should use reasonable bound on timeout */
-       s->timeout.tv_sec = 0;
-       s->timeout.tv_usec = 1;
+       if (btr_node_status(fn->btrn, fn->min_iqs) != 0) {
+               s->timeout.tv_sec = 0;
+               s->timeout.tv_usec = 1;
+       }
 }