#!/usr/bin/env python
import weakref

from gnuradio import blocks, gr
import pmt


class block_with_message_output(gr.basic_block):

    def __init__(self):
        gr.basic_block.__init__(self,
            "block_with_message_output",
            in_sig=None,
            out_sig=None)
        self.message_port_register_out(pmt.intern("test"))


class hier_block_with_message_output(gr.hier_block2):

    def __init__(self):
        gr.hier_block2.__init__(self,
            "hier_block_with_message_output",
            gr.io_signature(0, 0, 0),  # Input signature
            gr.io_signature(0, 0, 0))  # Output signature
        self.message_port_register_hier_in("test")
        b = block_with_message_output()
        self.msg_connect(b, "test", weakref.proxy(self), "test")

if __name__ == "__main__":
    tb = gr.top_block()
    message_debug = blocks.message_debug()
    hier = hier_block_with_message_output()

    tb.msg_connect(hier, "test", message_debug, "print")
    tb.start()
    tb.stop()
    tb.msg_disconnect(hier, "test", message_debug, "print")
