Hi Martin, On Sat, Feb 22, 2014 at 1:44 PM, Martin Braun <[email protected]> wrote: > On 02/22/2014 12:40 AM, Miklos Maroti wrote: >> Hi Guys, >> >> Ok, I have found out how to make it work reliably. You must register a >> listener with set_msg_handler, and then you will get the missing >> messages there. >> >> In light of this, I do not see how pdu_to_tagged_stream could work >> reliably. It does not register a listener (but it does not block >> either), so if there is a gap in the message stream, then it will miss >> that message. >> >> Miklos > > Miklos, > > that is right--a thorough discussion of message passing is high on our > agenda at the moment. pdu_to_tagged_stream is a bit of a special case, > since the only thing to do with a rx'd message is to put it onto the > output buffer, which is only available in work(), i.e., if we had a msg > handler, all it could do is re-buffer the msg before we can copy it into > the output buffer. One thing we did very recently was increase the size > of the msg q, so msg loss would be less likely.
My block does exactly the same: copies messages to a stream. In the handler I just queue it again (no copying, so no memory overhead), and in work first I check my private queue, if that is empty then I wait for a new message with delete_head_blocking. It works perfectly (provided you have enough ram to handle the bursts of messages). Miklos > > MB > > > _______________________________________________ > Discuss-gnuradio mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio _______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
