diff options
Diffstat (limited to 'mblock/src/include')
-rw-r--r-- | mblock/src/include/.gitignore | 2 | ||||
-rw-r--r-- | mblock/src/include/Makefile.am | 24 | ||||
-rw-r--r-- | mblock/src/include/mblock/.gitignore | 2 | ||||
-rw-r--r-- | mblock/src/include/mblock/Makefile.am | 37 | ||||
-rw-r--r-- | mblock/src/include/mblock/class_registry.h | 51 | ||||
-rw-r--r-- | mblock/src/include/mblock/common.h | 94 | ||||
-rw-r--r-- | mblock/src/include/mblock/exception.h | 118 | ||||
-rw-r--r-- | mblock/src/include/mblock/mblock.h | 318 | ||||
-rw-r--r-- | mblock/src/include/mblock/message.h | 88 | ||||
-rw-r--r-- | mblock/src/include/mblock/msg_accepter.h | 48 | ||||
-rw-r--r-- | mblock/src/include/mblock/msg_queue.h | 82 | ||||
-rw-r--r-- | mblock/src/include/mblock/port.h | 93 | ||||
-rw-r--r-- | mblock/src/include/mblock/protocol_class.h | 52 | ||||
-rw-r--r-- | mblock/src/include/mblock/runtime.h | 69 | ||||
-rw-r--r-- | mblock/src/include/mblock/time.h | 27 |
15 files changed, 0 insertions, 1105 deletions
diff --git a/mblock/src/include/.gitignore b/mblock/src/include/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/mblock/src/include/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/mblock/src/include/Makefile.am b/mblock/src/include/Makefile.am deleted file mode 100644 index d5672989c6..0000000000 --- a/mblock/src/include/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -# -# Copyright 2008 Free Software Foundation, Inc. -# -# This file is part of GNU Radio -# -# GNU Radio is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# GNU Radio is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Radio; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, -# Boston, MA 02110-1301, USA. -# - -include $(top_srcdir)/Makefile.common - -SUBDIRS = mblock diff --git a/mblock/src/include/mblock/.gitignore b/mblock/src/include/mblock/.gitignore deleted file mode 100644 index b336cc7cec..0000000000 --- a/mblock/src/include/mblock/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/Makefile -/Makefile.in diff --git a/mblock/src/include/mblock/Makefile.am b/mblock/src/include/mblock/Makefile.am deleted file mode 100644 index e36215aa40..0000000000 --- a/mblock/src/include/mblock/Makefile.am +++ /dev/null @@ -1,37 +0,0 @@ -# -# Copyright 2008 Free Software Foundation, Inc. -# -# This file is part of GNU Radio -# -# GNU Radio is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# GNU Radio is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Radio; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, -# Boston, MA 02110-1301, USA. -# - -include $(top_srcdir)/Makefile.common - -mbincludedir = $(includedir)/mblock - -mbinclude_HEADERS = \ - common.h \ - class_registry.h \ - exception.h \ - mblock.h \ - message.h \ - msg_accepter.h \ - msg_queue.h \ - port.h \ - protocol_class.h \ - runtime.h \ - time.h diff --git a/mblock/src/include/mblock/class_registry.h b/mblock/src/include/mblock/class_registry.h deleted file mode 100644 index e4341f7d14..0000000000 --- a/mblock/src/include/mblock/class_registry.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007,2008,2009 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_CLASS_REGISTRY_H -#define INCLUDED_MB_CLASS_REGISTRY_H - -#include <mblock/common.h> - -//! conceptually, pointer to constructor -typedef mb_mblock_sptr (*mb_mblock_maker_t)(mb_runtime *runtime, - const std::string &instance_name, - pmt::pmt_t user_arg); - -/* - * \brief Maintain mapping between mblock class_name and factory (maker) - */ -class mb_class_registry : public boost::noncopyable { -public: - static bool register_maker(const std::string &name, mb_mblock_maker_t maker); - static bool lookup_maker(const std::string &name, mb_mblock_maker_t *maker); -}; - -template<class mblock> -mb_mblock_sptr mb_mblock_maker(mb_runtime *runtime, - const std::string &instance_name, - pmt::pmt_t user_arg) -{ - return mb_mblock_sptr(new mblock(runtime, instance_name, user_arg)); -} - -#define REGISTER_MBLOCK_CLASS(name) \ - bool __RBC__ ## name = mb_class_registry::register_maker(#name, &mb_mblock_maker<name>) - -#endif /* INCLUDED_MB_CLASS_REGISTRY_H */ diff --git a/mblock/src/include/mblock/common.h b/mblock/src/include/mblock/common.h deleted file mode 100644 index 054b9987eb..0000000000 --- a/mblock/src/include/mblock/common.h +++ /dev/null @@ -1,94 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2007,2008,2009 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_COMMON_H -#define INCLUDED_MB_COMMON_H - -#include <gruel/pmt.h> -#include <vector> -#include <stdexcept> -#include <boost/utility.hpp> -#include <boost/enable_shared_from_this.hpp> -#include <boost/weak_ptr.hpp> - -/* - * The priority type and valid range - */ -typedef unsigned int mb_pri_t; -static const mb_pri_t MB_PRI_BEST = 0; -static const mb_pri_t MB_PRI_DEFAULT = 4; -static const mb_pri_t MB_PRI_WORST = 7; -static const mb_pri_t MB_NPRI = MB_PRI_WORST + 1; // number of valid priorities - -/*! - * \brief return true iff priority a is better than priority b - */ -inline static bool -mb_pri_better(mb_pri_t a, mb_pri_t b) -{ - return a < b; -} - -/*! - * \brief return true iff priority a is worse than priority b - */ -inline static bool -mb_pri_worse(mb_pri_t a, mb_pri_t b) -{ - return a > b; -} - -/*! - * \brief ensure that pri is valid - */ -inline static mb_pri_t -mb_pri_clamp(mb_pri_t p) -{ - return p < MB_NPRI ? p : MB_NPRI - 1; -} - -class mb_runtime; -typedef boost::shared_ptr<mb_runtime> mb_runtime_sptr; - -//class mb_runtime_impl; -//typedef boost::shared_ptr<mb_runtime_impl> mb_runtime_impl_sptr; - -class mb_mblock; -typedef boost::shared_ptr<mb_mblock> mb_mblock_sptr; - -class mb_mblock_impl; -typedef boost::shared_ptr<mb_mblock_impl> mb_mblock_impl_sptr; - -class mb_port; -typedef boost::shared_ptr<mb_port> mb_port_sptr; - -//class mb_port_detail; -//typedef boost::shared_ptr<mb_port_detail> mb_port_detail_sptr; - -class mb_msg_accepter; -typedef boost::shared_ptr<mb_msg_accepter> mb_msg_accepter_sptr; - -class mb_message; -typedef boost::shared_ptr<mb_message> mb_message_sptr; - -class mb_msg_queue; -typedef boost::shared_ptr<mb_msg_queue> mb_msg_queue_sptr; - -#endif /* INCLUDED_MB_COMMON_H */ diff --git a/mblock/src/include/mblock/exception.h b/mblock/src/include/mblock/exception.h deleted file mode 100644 index 6cc4566569..0000000000 --- a/mblock/src/include/mblock/exception.h +++ /dev/null @@ -1,118 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2008 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_EXCEPTION_H -#define INCLUDED_MB_EXCEPTION_H - -#include <stdexcept> - -class mb_mblock; - - -class mbe_base : public std::logic_error -{ -public: - mbe_base(mb_mblock *mb, const std::string &msg); -}; - -class mbe_not_implemented : public mbe_base -{ -public: - mbe_not_implemented(mb_mblock *mb, const std::string &msg); -}; - -class mbe_no_such_class : public mbe_base -{ -public: - mbe_no_such_class(mb_mblock *, const std::string &class_name); -}; - -class mbe_no_such_component : public mbe_base -{ -public: - mbe_no_such_component(mb_mblock *, const std::string &component_name); -}; - -class mbe_duplicate_component : public mbe_base -{ -public: - mbe_duplicate_component(mb_mblock *, const std::string &component_name); -}; - -class mbe_no_such_port : public mbe_base -{ -public: - mbe_no_such_port(mb_mblock *, const std::string &port_name); -}; - - -class mbe_duplicate_port : public mbe_base -{ -public: - mbe_duplicate_port(mb_mblock *, const std::string &port_name); -}; - -class mbe_already_connected : public mbe_base -{ -public: - mbe_already_connected(mb_mblock *, const std::string &comp_name, - const std::string &port_name); -}; - -class mbe_incompatible_ports : public mbe_base -{ -public: - mbe_incompatible_ports(mb_mblock *, - const std::string &comp1_name, - const std::string &port1_name, - const std::string &comp2_name, - const std::string &port2_name); -}; - -class mbe_invalid_port_type : public mbe_base -{ -public: - mbe_invalid_port_type(mb_mblock *, const std::string &comp_name, - const std::string &port_name); -}; - -class mbe_mblock_failed : public mbe_base -{ -public: - mbe_mblock_failed(mb_mblock *, const std::string &msg); -}; - - - -// not derived from mbe_base to simplify try/catch -class mbe_terminate -{ -public: - mbe_terminate(); -}; - -// not derived from mbe_base to simplify try/catch -class mbe_exit -{ -public: - mbe_exit(); -}; - -#endif /* INCLUDED_MB_EXCEPTION_H */ diff --git a/mblock/src/include/mblock/mblock.h b/mblock/src/include/mblock/mblock.h deleted file mode 100644 index 2f036e4145..0000000000 --- a/mblock/src/include/mblock/mblock.h +++ /dev/null @@ -1,318 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2008,2009 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_MBLOCK_H -#define INCLUDED_MB_MBLOCK_H - -#include <mblock/common.h> -#include <mblock/message.h> -#include <mblock/port.h> -#include <mblock/time.h> - - -/*! - * Abstract class implementing visitor pattern - * \ingroup internal - */ -class mb_visitor -{ -public: - virtual ~mb_visitor(); - virtual bool operator()(mb_mblock *mblock) = 0; -}; - -// ---------------------------------------------------------------------- - -/*! - * \brief Parent class for all message passing blocks - * - * Subclass this to define your mblocks. - */ -class mb_mblock : boost::noncopyable, - public boost::enable_shared_from_this<mb_mblock> -{ -private: - mb_mblock_impl_sptr d_impl; // implementation details - - friend class mb_runtime; - friend class mb_mblock_impl; - friend class mb_worker; - -protected: - /*! - * \brief mblock constructor. - * - * Initializing all mblocks in the system is a 3 step procedure. - * - * The top level mblock's constructor is run. That constructor - * (a) registers all of its ports using define_port, (b) registers any - * subcomponents it may have via the define_component method, and - * then (c) issues connect calls to wire its subcomponents together. - * - * \param runtime the runtime associated with this mblock - * \param instance_name specify the name of this instance - * (for debugging, NUMA mapping, etc) - * \param user_arg argument passed by user to constructor - * (ignored by the mb_mblock base class) - */ - mb_mblock(mb_runtime *runtime, const std::string &instance_name, pmt::pmt_t user_arg); - -public: - /*! - * \brief Called by the runtime system to execute the initial - * transition of the finite state machine. - * - * This method is called by the runtime after all blocks are - * constructed and before the first message is delivered. Override - * this to initialize your finite state machine. - */ - virtual void initial_transition(); - -protected: - /*! - * \brief Called by the runtime system when there's a message to handle. - * - * Override this to define your behavior. - * - * Do not issue any potentially blocking calls in this method. This - * includes things such reads or writes on sockets, pipes or slow - * i/o devices. - */ - virtual void handle_message(mb_message_sptr msg); - - /*! - * \brief Define a port. - * - * EXTERNAL and RELAY ports are part of our peer interface. - * INTERNAL ports are used to talk to sub-components. - * - * \param port_name The name of the port (must be unique within this mblock). - * \param protocol_class_name The name of the protocol class associated with - * this port. It must already be defined. - * \param conjugated Are the incoming and outgoing message sets swapped? - * \param port_type INTERNAL, EXTERNAL or RELAY. - */ - mb_port_sptr - define_port(const std::string &port_name, - const std::string &protocol_class_name, - bool conjugated, - mb_port::port_type_t port_type); - - /*! - * \brief Define a subcomponent by name. - * - * Called within the constructor to tell the system the - * names and identities of our sub-component mblocks. - * - * \param component_name The name of the sub-component (must be unique with this mblock). - * \param class_name The class of the instance that is to be created. - * \param user_arg The argument to pass to the constructor of the component. - */ - void - define_component(const std::string &component_name, - const std::string &class_name, - pmt::pmt_t user_arg = pmt::PMT_NIL); - - /*! - * \brief connect endpoint_1 to endpoint_2 - * - * \param comp_name1 component on one end of the connection - * \param port_name1 the name of the port on comp1 - * \param comp_name2 component on the other end of the connection - * \param port_name2 the name of the port on comp2 - * - * An endpoint is specified by the component's local name (given as - * component_name in the call to register_component) and the name of - * the port on that component. - * - * To connect an internal or relay port, use "self" as the component name. - */ - void - connect(const std::string &comp_name1, const std::string &port_name1, - const std::string &comp_name2, const std::string &port_name2); - - /*! - * \brief disconnect endpoint_1 from endpoint_2 - * - * \param comp_name1 component on one end of the connection - * \param port_name1 the name of the port on comp1 - * \param comp_name2 component on the other end of the connection - * \param port_name2 the name of the port on comp2 - * - * An endpoint is specified by the component's local name (given as - * component_name in the call to register_component) and the name of - * the port on that component. - * - * To disconnect an internal or relay port, use "self" as the component name. - */ - void - disconnect(const std::string &comp_name1, const std::string &port_name1, - const std::string &comp_name2, const std::string &port_name2); - - /*! - * \brief disconnect all connections to specified component - * \param component_name component to disconnect - */ - void - disconnect_component(const std::string &component_name); - - /*! - * \brief disconnect all connections to all components - */ - void - disconnect_all(); - - /*! - * \brief Return number of connections (QA mostly) - */ - int - nconnections() const; - - //! Set the class name - void set_class_name(const std::string &name); - - /*! - * \brief Tell runtime that we are done. - * - * This method does not return. - */ - void exit(); - - /*! - * \brief Ask runtime to execute the shutdown procedure for all blocks. - * - * \param result sets value of \p result output argument of runtime->run(...) - * - * The runtime first sends a maximum priority %shutdown message to - * all blocks. All blocks should handle the %shutdown message, - * perform whatever clean up is required, and call this->exit(); - * - * After a period of time (~100ms), any blocks which haven't yet - * called this->exit() are sent a maximum priority %halt message. - * %halt is detected in main_loop, and this->exit() is called. - * - * After an additional period of time (~100ms), any blocks which - * still haven't yet called this->exit() are sent a SIG<FOO> (TBD) - * signal, which will blow them out of any blocking system calls and - * raise an mbe_terminate exception. The default top-level - * runtime-provided exception handler will call this->exit() to - * finish the process. - * - * runtime->run(...) returns when all blocks have called exit. - */ - void shutdown_all(pmt::pmt_t result); - - /*! - * \brief main event dispatching loop - * - * Although it is possible to override this, the default implementation - * should work for virtually all cases. - */ - virtual void main_loop(); - -public: - virtual ~mb_mblock(); - - //! Return instance name of this block - std::string instance_name() const; - - //! Return the class name of this block - std::string class_name() const; - - //! Set the instance name of this block. - void set_instance_name(const std::string &name); - - //! Return the parent of this mblock, or 0 if we're the top-level block. - mb_mblock *parent() const; - - /*! - * \brief Schedule a "one shot" timeout. - * - * \param abs_time the absolute time at which the timeout should fire - * \param user_data the data passed in the %timeout message. - * - * When the timeout fires, a message will be sent to the mblock. - * - * The message will have port_id = %sys-port, signal = %timeout, - * data = user_data, metadata = the handle returned from - * schedule_one_shot_timeout, pri = MB_PRI_BEST. - * - * \returns a handle that can be used in cancel_timeout, and is passed - * as the metadata field of the generated %timeout message. - * - * To cancel a pending timeout, call cancel_timeout. - */ - pmt::pmt_t - schedule_one_shot_timeout(const mb_time &abs_time, pmt::pmt_t user_data); - - /*! - * \brief Schedule a periodic timeout. - * - * \param first_abs_time The absolute time at which the first timeout should fire. - * \param delta_time The relative delay between the first and successive timeouts. - * \param user_data the data passed in the %timeout message. - * - * When the timeout fires, a message will be sent to the mblock, and a - * new timeout will be scheduled for previous absolute time + delta_time. - * - * The message will have port_id = %sys-port, signal = %timeout, - * data = user_data, metadata = the handle returned from - * schedule_one_shot_timeout, pri = MB_PRI_BEST. - * - * \returns a handle that can be used in cancel_timeout, and is passed - * as the metadata field of the generated %timeout message. - * - * To cancel a pending timeout, call cancel_timeout. - */ - pmt::pmt_t - schedule_periodic_timeout(const mb_time &first_abs_time, - const mb_time &delta_time, - pmt::pmt_t user_data); - - /*! - * \brief Attempt to cancel a pending timeout. - * - * Note that this only stops a future timeout from firing. It is - * possible that a timeout may have already fired and enqueued a - * %timeout message, but that that message has not yet been seen by - * handle_message. - * - * \param handle returned from schedule_one_shot_timeout or schedule_periodic_timeout. - */ - void cancel_timeout(pmt::pmt_t handle); - - /*! - * \brief Perform a pre-order depth-first traversal of the hierarchy. - * - * The traversal stops and returns false if any call to visitor returns false. - */ - bool - walk_tree(mb_visitor *visitor); - - - //! \internal - // internal use only - mb_mblock_impl_sptr - impl() const { return d_impl; } - -}; - - -#endif /* INCLUDED_MB_MBLOCK_H */ diff --git a/mblock/src/include/mblock/message.h b/mblock/src/include/mblock/message.h deleted file mode 100644 index 4051d0c8e6..0000000000 --- a/mblock/src/include/mblock/message.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2007,2008,2009 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_MESSAGE_H -#define INCLUDED_MB_MESSAGE_H - -#include <mblock/common.h> -#include <iosfwd> - -#define MB_MESSAGE_LOCAL_ALLOCATOR 0 // define to 0 or 1 - -class mb_message; -typedef boost::shared_ptr<mb_message> mb_message_sptr; - -/*! - * \brief construct a message and return boost::shared_ptr - * - * \param signal identifier of the message - * \param data the data to be operated on - * \param metadata information about the data - * \param priority urgency - */ -mb_message_sptr -mb_make_message(pmt::pmt_t signal, - pmt::pmt_t data = pmt::PMT_NIL, - pmt::pmt_t metadata = pmt::PMT_NIL, - mb_pri_t priority = MB_PRI_DEFAULT); - -class mb_message { - mb_message_sptr d_next; // link field for msg queue - pmt::pmt_t d_signal; - pmt::pmt_t d_data; - pmt::pmt_t d_metadata; - mb_pri_t d_priority; - pmt::pmt_t d_port_id; // name of port msg was rcvd on (symbol) - - friend class mb_msg_queue; - - friend mb_message_sptr - mb_make_message(pmt::pmt_t signal, pmt::pmt_t data, pmt::pmt_t metadata, mb_pri_t priority); - - // private constructor - mb_message(pmt::pmt_t signal, pmt::pmt_t data, pmt::pmt_t metadata, mb_pri_t priority); - -public: - ~mb_message(); - - pmt::pmt_t signal() const { return d_signal; } - pmt::pmt_t data() const { return d_data; } - pmt::pmt_t metadata() const { return d_metadata; } - mb_pri_t priority() const { return d_priority; } - pmt::pmt_t port_id() const { return d_port_id; } - - void set_port_id(pmt::pmt_t port_id){ d_port_id = port_id; } - -#if (MB_MESSAGE_LOCAL_ALLOCATOR) - void *operator new(size_t); - void operator delete(void *, size_t); -#endif -}; - -std::ostream& operator<<(std::ostream& os, const mb_message &msg); - -inline -std::ostream& operator<<(std::ostream& os, const mb_message_sptr msg) -{ - os << *(msg.get()); - return os; -} - -#endif /* INCLUDED_MB_MESSAGE_H */ diff --git a/mblock/src/include/mblock/msg_accepter.h b/mblock/src/include/mblock/msg_accepter.h deleted file mode 100644 index 7dc1e50cb2..0000000000 --- a/mblock/src/include/mblock/msg_accepter.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007,2008,2009 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_MSG_ACCEPTER_H -#define INCLUDED_MB_MSG_ACCEPTER_H - -#include <mblock/common.h> - -/*! - * \brief Abstract class that accepts messages - * - * The mb_port::send method ultimately resolves the (local) - * destination of a send to an object of this type. The resulting - * object is called to deliver the message. - * - * Expect derived classes such as these: - * - * smp : target is visible in this address space - * mpi : target is on the other end of an MPI link - * ppe->spe : sending from Cell PPE to Cell SPE - * spe->ppe : sending from Cell SPE to Cell PPE - */ -class mb_msg_accepter { -public: - mb_msg_accepter(){}; - virtual ~mb_msg_accepter(); - - virtual void operator()(pmt::pmt_t signal, pmt::pmt_t data, pmt::pmt_t metadata, mb_pri_t priority) = 0; -}; - -#endif /* INCLUDED_MB_MSG_ACCEPTER_H */ diff --git a/mblock/src/include/mblock/msg_queue.h b/mblock/src/include/mblock/msg_queue.h deleted file mode 100644 index a23397081a..0000000000 --- a/mblock/src/include/mblock/msg_queue.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2007,2008 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_MSG_QUEUE_H -#define INCLUDED_MB_MSG_QUEUE_H - -#include <mblock/common.h> -#include <gnuradio/omnithread.h> -#include <mblock/time.h> - -/*! - * \brief priority queue for mblock messages - */ -class mb_msg_queue : boost::noncopyable -{ - // When empty both head and tail are zero. - struct subq { - mb_message_sptr head; - mb_message_sptr tail; - - bool empty_p() const { return head == 0; } - }; - - omni_mutex d_mutex; - omni_condition d_not_empty; // reader waits on this - - // FIXME add bitmap to indicate which queues are non-empty. - subq d_queue[MB_NPRI]; - - mb_message_sptr get_highest_pri_msg_helper(); - -public: - mb_msg_queue(); - ~mb_msg_queue(); - - //! Insert \p msg into priority queue. - void insert(mb_message_sptr msg); - - /* - * \brief Delete highest pri message from the queue and return it. - * Returns equivalent of zero pointer if queue is empty. - */ - mb_message_sptr get_highest_pri_msg_nowait(); - - /* - * \brief Delete highest pri message from the queue and return it. - * If the queue is empty, this call blocks until it can return a message. - */ - mb_message_sptr get_highest_pri_msg(); - - /* - * \brief Delete highest pri message from the queue and return it. - * If the queue is empty, this call blocks until it can return a message - * or real-time exceeds the absolute time, abs_time. - * - * \param abs_time specifies the latest absolute time to wait until. - * \sa mb_time::time - * - * \returns a valid mb_message_sptr, or the equivalent of a zero pointer - * if the call timed out while waiting. - */ - mb_message_sptr get_highest_pri_msg_timedwait(const mb_time &abs_time); -}; - -#endif /* INCLUDED_MB_MSG_QUEUE_H */ diff --git a/mblock/src/include/mblock/port.h b/mblock/src/include/mblock/port.h deleted file mode 100644 index 1664765db1..0000000000 --- a/mblock/src/include/mblock/port.h +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2008,2009 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_PORT_H -#define INCLUDED_MB_PORT_H - -#include <mblock/common.h> - -/*! - * \brief Abstract port characteristics - */ -class mb_port : boost::noncopyable -{ -public: - - //! port classification - enum port_type_t { - EXTERNAL, //< Externally visible - RELAY, //< Externally visible but really connected to a sub-component - INTERNAL //< Visible to self only - }; - -private: - - std::string d_port_name; - pmt::pmt_t d_port_symbol; // the port_name as a pmt::pmt symbol - pmt::pmt_t d_protocol_class; - bool d_conjugated; - port_type_t d_port_type; - -protected: - mb_mblock *d_mblock; // mblock we're defined in - - // protected constructor - mb_port(mb_mblock *mblock, - const std::string &port_name, - const std::string &protocol_class_name, - bool conjugated, - mb_port::port_type_t port_type); - - mb_mblock *mblock() const { return d_mblock; } - -public: - std::string port_name() const { return d_port_name; } - pmt::pmt_t port_symbol() const { return d_port_symbol; } - pmt::pmt_t protocol_class() const { return d_protocol_class; } - bool conjugated() const { return d_conjugated; } - port_type_t port_type() const { return d_port_type; } - - pmt::pmt_t incoming_message_set() const; - pmt::pmt_t outgoing_message_set() const; - - virtual ~mb_port(); - - /*! - * \brief send a message - * - * \param signal the event name - * \param data optional data - * \param metadata optional metadata - * \param priority the urgency at which the message is sent - */ - virtual void - send(pmt::pmt_t signal, - pmt::pmt_t data = pmt::PMT_F, - pmt::pmt_t metadata = pmt::PMT_F, - mb_pri_t priority = MB_PRI_DEFAULT) = 0; - - /* - * \brief Invalidate any cached peer resolutions - * \internal - */ - virtual void invalidate_cache() = 0; -}; - -#endif /* INCLUDED_MB_PORT_H */ diff --git a/mblock/src/include/mblock/protocol_class.h b/mblock/src/include/mblock/protocol_class.h deleted file mode 100644 index a01e68d8f5..0000000000 --- a/mblock/src/include/mblock/protocol_class.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2008,2009 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_PROTOCOL_CLASS_H -#define INCLUDED_MB_PROTOCOL_CLASS_H - -#include <mblock/common.h> - -/*! - * \brief construct a protocol_class - * - * \param name the name of the class (symbol) - * \param incoming incoming message set (list of symbols) - * \param outgoing outgoing message set (list of symbols) - */ -pmt::pmt_t mb_make_protocol_class(pmt::pmt_t name, pmt::pmt_t incoming, pmt::pmt_t outgoing); - -// Accessors -pmt::pmt_t mb_protocol_class_name(pmt::pmt_t pc); //< return name of protocol class -pmt::pmt_t mb_protocol_class_incoming(pmt::pmt_t pc); //< return incoming message set -pmt::pmt_t mb_protocol_class_outgoing(pmt::pmt_t pc); //< return outgoing message set - -pmt::pmt_t mb_protocol_class_lookup(pmt::pmt_t name); //< lookup an existing protocol class by name - - -/*! - * \brief Initialize one or more protocol class from a serialized description. - * Used by machine generated code. - */ -class mb_protocol_class_init { -public: - mb_protocol_class_init(const char *data, size_t len); -}; - -#endif /* INCLUDED_MB_PROTOCOL_CLASS_H */ diff --git a/mblock/src/include/mblock/runtime.h b/mblock/src/include/mblock/runtime.h deleted file mode 100644 index 9afc38b767..0000000000 --- a/mblock/src/include/mblock/runtime.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2008,2009 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_RUNTIME_H -#define INCLUDED_MB_RUNTIME_H - -#include <mblock/common.h> -#include <gnuradio/omnithread.h> - -/*! - * \brief Public constructor (factory) for mb_runtime objects. - */ -mb_runtime_sptr mb_make_runtime(); - -/*! - * \brief Abstract runtime support for m-blocks - * - * There should generally be only a single instance of this class. - */ -class mb_runtime : boost::noncopyable, - public boost::enable_shared_from_this<mb_runtime> -{ -protected: - mb_mblock_sptr d_top; - -public: - mb_runtime(){} - virtual ~mb_runtime(); - - /*! - * \brief Construct and run the specified mblock hierarchy. - * - * This routine turns into the m-block scheduler, and - * blocks until the system is shutdown. - * - * \param instance_name name of the top-level mblock (conventionally "top") - * \param class_name The class of the top-level mblock to create. - * \param user_arg The argument to pass to the top-level mblock constructor - * \param result The value passed to shutdown_all. - * - * \returns true if the system ran successfully. - */ - virtual bool run(const std::string &instance_name, - const std::string &class_name, - pmt::pmt_t user_arg, - pmt::pmt_t *result = 0) = 0; - - // QA only... - mb_mblock_sptr top() { return d_top; } -}; - -#endif /* INCLUDED_MB_RUNTIME_H */ diff --git a/mblock/src/include/mblock/time.h b/mblock/src/include/mblock/time.h deleted file mode 100644 index 630fa845c1..0000000000 --- a/mblock/src/include/mblock/time.h +++ /dev/null @@ -1,27 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2008 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ -#ifndef INCLUDED_MB_TIME_H -#define INCLUDED_MB_TIME_H - -#include <gnuradio/omni_time.h> -typedef omni_time mb_time; - -#endif /* INCLUDED_MB_TIME_H */ |