21 #ifndef GRPPI_FF_DETAIL_UNORDERED_STREAM_FILTER_H 22 #define GRPPI_FF_DETAIL_UNORDERED_STREAM_FILTER_H 26 #include <ff/farm.hpp> 32 template <
typename Item,
typename Filter>
39 std::vector<ff::ff_node *> workers_;
40 std::unique_ptr<filter_emitter<Item>> p_emitter_;
41 std::unique_ptr<filter_collector<Item>> p_collector_;
44 template <
typename Item,
typename Filter>
49 ff::ff_ofarm{
false, DEF_IN_BUFF_ENTRIES, DEF_OUT_BUFF_ENTRIES,
true, num_workers},
50 filter_{std::move(filter)},
52 p_emitter_{std::make_unique<filter_emitter<Item>>()},
53 p_collector_{std::make_unique<filter_collector<Item>>()}
55 for(
int i=0;i<num_workers;++i) {
57 std::forward<Filter>(filter_)});
59 add_workers(workers_);
60 add_emitter(p_emitter_.get());
61 add_collector(p_collector_.get());
Definition: callable_traits.h:26
Worker that passes a value to next stage if the predicate is satisfied or the filtered_value constant...
Definition: filter_nodes.h:47
Definition: unordered_stream_filter.h:33
unordered_stream_filter(Filter &&filter, int num_workers)
Definition: unordered_stream_filter.h:45