Am i getting this right
With gr.block, each block has bunch of stream ports (vector<vector> ins,vector<vector> outs) and some message port(which we use to specify earlier in signature and there numbering use to start after stream ports )
With gras.block, each block has bunch of ports with bulk_data buffer and message queue(which will be posted msg from upstream). So when I am taking len(ins[0]) its the length of bulk_data buffer(which buffering stream data i guess) so its returning 0.
Some more doubts
1.when we take length of output buffer m i asking length of output buffer available for use (so i don't overwrite previous produced data).
2. tags are messages(associated with particular bulk_data) so are they posted in message queue.(which must be different from actual message queue)
3.when we are calling produce we are basically posting buffer data downstream and when we consume we free up the input buffer