def wrap_subscribe_broadcast(transport_layer, channel, callback, *args, **kwargs):
    """Listen to a topic on the transport layer, similar to the
    subscribe_broadcast call in transport/common_transport.py. Intercept all
    incoming messages and parse for recipe information.
    See common_transport.subscribe_broadcast for possible arguments.
      :param transport_layer: Reference to underlying transport object.
      :param channel:  Topic name to subscribe to.
      :param callback: Function to be called when messages are received.
                       The callback will pass three arguments,
                       a RecipeWrapper object (details below), the header as
                       a dictionary structure, and the message.
      :return: A unique subscription ID
    """

    return _wrap_subscription(
        transport_layer,
        transport_layer.subscribe_broadcast,
        channel,
        callback,
        *args,
        **kwargs
    )