Loading...
Searching...
No Matches
msg_passing.h
Go to the documentation of this file.
/* -*- c++ -*- */
/*
* Copyright 2009,2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
*/
#ifndef INCLUDED_MSG_PASSING_H
#define INCLUDED_MSG_PASSING_H
/*!
* \brief Include this header to use the message passing features
*/
#include <gnuradio/api.h>
#include <gnuradio/messages/msg_accepter.h>
#include <pmt/pmt.h>
namespace gr {
namespace messages {
/*!
* \brief send message to msg_accepter
*
* \param accepter is the target of the send.
* \param which_port A pmt symbol describing the port by name.
* \param msg is the message to send. It's usually a pmt tuple.
*
* Sending a message is an asynchronous operation. The \p send
* call will not wait for the message either to arrive at the
* destination or to be received.
*
* \returns msg
*/
static inline pmt::pmt_t
send(msg_accepter_sptr accepter, const pmt::pmt_t& which_port, const pmt::pmt_t& msg)
{
accepter->post(which_port, msg);
return msg;
}
/*!
* \brief send message to msg_accepter
*
* \param accepter is the target of the send.
* \param which_port A pmt symbol describing the port by name.
* \param msg is the message to send. It's usually a pmt tuple.
*
* Sending a message is an asynchronous operation. The \p send
* call will not wait for the message either to arrive at the
* destination or to be received.
*
* \returns msg
*/
static inline pmt::pmt_t
send(msg_accepter* accepter, const pmt::pmt_t& which_port, const pmt::pmt_t& msg)
{
accepter->post(which_port, msg);
return msg;
}
/*!
* \brief send message to msg_accepter
*
* \param accepter is the target of the send.
* \param which_port A pmt symbol describing the port by name.
* \param msg is the message to send. It's usually a pmt tuple.
*
* Sending a message is an asynchronous operation. The \p send
* call will not wait for the message either to arrive at the
* destination or to be received.
*
* \returns msg
*/
static inline pmt::pmt_t
send(msg_accepter& accepter, const pmt::pmt_t& which_port, const pmt::pmt_t& msg)
{
accepter.post(which_port, msg);
return msg;
}
/*!
* \brief send message to msg_accepter
*
* \param accepter is the target of the send.
* aprecond: pmt::is_msg_accepter(accepter)
* \param which_port A pmt symbol describing the port by name.
* \param msg is the message to send. It's usually a pmt tuple.
*
* Sending a message is an asynchronous operation. The \p send
* call will not wait for the message either to arrive at the
* destination or to be received.
*
* \returns msg
*/
static inline pmt::pmt_t
send(pmt::pmt_t accepter, const pmt::pmt_t& which_port, const pmt::pmt_t& msg)
{
return send(pmt::msg_accepter_ref(accepter), which_port, msg);
}
} /* namespace messages */
} /* namespace gr */
#endif /* INCLUDED_MSG_PASSING_H */
gr::messages::msg_accepter
Virtual base class that accepts messages.
Definition messages/msg_accepter.h:25
gr::messages::msg_accepter::post
virtual void post(pmt::pmt_t which_port, pmt::pmt_t msg)=0
send msg to msg_accepter on port which_port
api.h
msg_accepter.h
gr::messages
Definition messages/msg_accepter.h:19
gr::messages::send
static pmt::pmt_t send(msg_accepter_sptr accepter, const pmt::pmt_t &which_port, const pmt::pmt_t &msg)
send message to msg_accepter
Definition msg_passing.h:39
gr
GNU Radio logging wrapper.
Definition basic_block.h:29
pmt::msg_accepter_ref
PMT_API std::shared_ptr< gr::messages::msg_accepter > msg_accepter_ref(const pmt_t &obj)
Return underlying msg_accepter.
pmt::pmt_t
std::shared_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting).
Definition pmt.h:83
pmt.h