internal void ApplyFilter (bool close)
{
if (filter == null)
return;
filtering = true;
Bucket one = first_bucket;
first_bucket = null; // This will recreate new buckets for the filtered content
cur_bucket = null;
total = 0;
for (Bucket b = one; b != null; b = b.Next)
b.Send (filter);
for (Bucket b = one; b != null; b = b.Next)
b.Dispose ();
if (close) {
filter.Flush ();
filter.Close ();
filter = null;
} else {
filter.Flush ();
}
filtering = false;
}