From c92b1c1b320cb05c858bd0dcf4850de6e666e171 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Sat, 29 Sep 2012 00:07:02 -0700 Subject: apology support compiling w/o message handlers --- lib/element_impl.hpp | 135 ++++++--------------------------------------------- 1 file changed, 15 insertions(+), 120 deletions(-) (limited to 'lib/element_impl.hpp') diff --git a/lib/element_impl.hpp b/lib/element_impl.hpp index d0f7f5d..988bbbf 100644 --- a/lib/element_impl.hpp +++ b/lib/element_impl.hpp @@ -17,31 +17,13 @@ #ifndef INCLUDED_LIBGRAS_ELEMENT_IMPL_HPP #define INCLUDED_LIBGRAS_ELEMENT_IMPL_HPP -#include -#include -#include -#include -#include -#include - -#include -#include -#include +#include +#include +#include #include #include -#include -#include -#include - -static GRAS_FORCE_INLINE unsigned long myulround(const double x) -{ - return (unsigned long)(x + 0.5); -} - -static GRAS_FORCE_INLINE unsigned long long myullround(const double x) -{ - return (unsigned long long)(x + 0.5); -} +#include +#include namespace gnuradio { @@ -54,114 +36,27 @@ struct ElementImpl void top_block_cleanup(void); void hier_block_cleanup(void); - //stuff for when its a block + //common element properties std::string name; long unique_id; - - //per port properties - std::vector input_items_sizes; - std::vector output_items_sizes; IOSignature input_signature; IOSignature output_signature; - std::vector input_history_items; - std::vector output_multiple_items; - std::vector input_multiple_items; - std::vector input_inline_enables; - - //keeps track of production - std::vector items_consumed; - std::vector items_produced; - - //work buffers for the classic interface - size_t work_noutput_items; - std::vector work_input_items; - std::vector work_output_items; - std::vector work_ninput_items; - std::vector fcast_ninput_items; - - //work buffers for the new work interface - Block::InputItems input_items; - Block::OutputItems output_items; - ptrdiff_t work_io_ptr_mask; - //track work's calls to produce and consume - std::vector produce_items; - std::vector consume_items; - std::vector consume_called; - - //track the subscriber counts - std::vector input_tokens; - std::vector output_tokens; - std::set token_pool; - - std::vector output_buffer_tokens; - - //buffer queues and ready conditions - InputBufferQueues input_queues; - OutputBufferQueues output_queues; - - //tag tracking - std::vector input_tags_changed; - std::vector > input_tags; - Block::tag_propagation_policy_t tag_prop_policy; - - //topological things - tsbe::Block block; - tsbe::Topology topology; - tsbe::Executor executor; - const tsbe::Element &get_elem(void) const - { - if (block) return block; - return topology; - } - //gets the handlers access for forecast and work - Block *block_ptr; - tsbe::TaskInterface work_task_iface; //only valid during work - - //interruptible thread stuff + //top block stuff SharedThreadGroup thread_group; - boost::shared_ptr interruptible_thread; - - //handlers - void handle_input_msg(const tsbe::TaskInterface &, const size_t, const tsbe::Wax &); - void handle_output_msg(const tsbe::TaskInterface &, const size_t, const tsbe::Wax &); - void topology_update(const tsbe::TaskInterface &); - void handle_block_msg(const tsbe::TaskInterface &, const tsbe::Wax &); - void handle_allocation(const tsbe::TaskInterface &); - void handle_task(const tsbe::TaskInterface &); - void mark_done(const tsbe::TaskInterface &); - void conclusion(const tsbe::TaskInterface &task_iface, const bool); - void buffer_returner(const size_t index, SBuffer &buffer); - void input_update(const tsbe::TaskInterface &task_iface); - void sort_tags(const size_t index); - void trim_tags(const tsbe::TaskInterface &, const size_t index); + Token token; - //work helpers - int work_ret; - inline void task_work(void) + //things may be in this element + boost::shared_ptr topology; + boost::shared_ptr executor; + boost::shared_ptr block; + Apology::Base *get_elem(void) const { - this->work_ret = block_ptr->Work(this->input_items, this->output_items); + if (block) return block.get(); + return topology.get(); } - //is the fg running? - enum - { - BLOCK_STATE_INIT, - BLOCK_STATE_LIVE, - BLOCK_STATE_DONE, - } block_state; - Token token; - size_t hint; //some kind of allocation hint - Affinity buffer_affinity; - - std::vector > output_allocation_hints; - //rate settings - bool enable_fixed_rate; - double relative_rate; - bool forecast_fail; - bool forecast_enable; - bool topology_init; }; } //namespace gnuradio -- cgit