Dear List,
I have another problem with stopping my C++ block. My block receives blobs
of bytes as messages over the new message passing interface and outputs
them as a byte stream. At some place I receive an EOF message, set a flag
and continue to empty my buffer in the work method. Once the buffer is
empty I signal EOF to the flowgraph by returning -1 from general_work.
However after that my work function keeps getting called.
My general_work function looks like this:
int general_work(int noutput_items, gr_vector_int& ninput_items,
gr_vector_const_void_star& input_items, gr_vector_void_star& output_items)
{
printf("work function called\n");
if(d_stop && d_queue.size() == 0) {
// signal EOF
printf("Signal EOF\n");
return -1;
}
int num_out;
// Generate the actual output
// ...
return num_out;
}
And the output I get looks like this:
work function called
work function called
work function called
Signal EOF
work function called
work function called
work function called
work function called
...
Until I stop the whole flowgraph with Ctrl+C
What am I missing here? If I understood correctly the work function should
not be called anymore after signalling EOF, since there is by definition
of EOF, nothing more to get.
Yours
Martin
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio