diff options
Diffstat (limited to 'gnuradio-core/src/lib')
-rw-r--r-- | gnuradio-core/src/lib/io/gr_message_source.cc | 15 | ||||
-rw-r--r-- | gnuradio-core/src/lib/io/gr_message_source.h | 4 | ||||
-rw-r--r-- | gnuradio-core/src/lib/io/gr_message_source.i | 2 |
3 files changed, 21 insertions, 0 deletions
diff --git a/gnuradio-core/src/lib/io/gr_message_source.cc b/gnuradio-core/src/lib/io/gr_message_source.cc index 3fbe3708e..3efc5b321 100644 --- a/gnuradio-core/src/lib/io/gr_message_source.cc +++ b/gnuradio-core/src/lib/io/gr_message_source.cc @@ -43,6 +43,13 @@ gr_make_message_source(size_t itemsize, int msgq_limit) return gr_message_source_sptr(new gr_message_source(itemsize, msgq_limit)); } +// public constructor that takes existing message queue +gr_message_source_sptr +gr_make_message_source(size_t itemsize, gr_msg_queue_sptr msgq) +{ + return gr_message_source_sptr(new gr_message_source(itemsize, msgq)); +} + gr_message_source::gr_message_source (size_t itemsize, int msgq_limit) : gr_sync_block("message_source", gr_make_io_signature(0, 0, 0), @@ -51,6 +58,14 @@ gr_message_source::gr_message_source (size_t itemsize, int msgq_limit) { } +gr_message_source::gr_message_source (size_t itemsize, gr_msg_queue_sptr msgq) + : gr_sync_block("message_source", + gr_make_io_signature(0, 0, 0), + gr_make_io_signature(1, 1, itemsize)), + d_itemsize(itemsize), d_msgq(msgq), d_msg_offset(0), d_eof(false) +{ +} + gr_message_source::~gr_message_source() { } diff --git a/gnuradio-core/src/lib/io/gr_message_source.h b/gnuradio-core/src/lib/io/gr_message_source.h index 5a5c6a5d8..46a808754 100644 --- a/gnuradio-core/src/lib/io/gr_message_source.h +++ b/gnuradio-core/src/lib/io/gr_message_source.h @@ -31,6 +31,7 @@ class gr_message_source; typedef boost::shared_ptr<gr_message_source> gr_message_source_sptr; gr_message_source_sptr gr_make_message_source (size_t itemsize, int msgq_limit=0); +gr_message_source_sptr gr_make_message_source (size_t itemsize, gr_msg_queue_sptr msgq); /*! * \brief Turn received messages into a stream @@ -47,9 +48,12 @@ class gr_message_source : public gr_sync_block friend gr_message_source_sptr gr_make_message_source(size_t itemsize, int msgq_limit); + friend gr_message_source_sptr + gr_make_message_source(size_t itemsize, gr_msg_queue_sptr msgq); protected: gr_message_source (size_t itemsize, int msgq_limit); + gr_message_source (size_t itemsize, gr_msg_queue_sptr msgq); public: ~gr_message_source (); diff --git a/gnuradio-core/src/lib/io/gr_message_source.i b/gnuradio-core/src/lib/io/gr_message_source.i index fdc74741e..8a9c762d0 100644 --- a/gnuradio-core/src/lib/io/gr_message_source.i +++ b/gnuradio-core/src/lib/io/gr_message_source.i @@ -23,11 +23,13 @@ GR_SWIG_BLOCK_MAGIC(gr,message_source); gr_message_source_sptr gr_make_message_source (size_t itemsize, int msgq_limit=0); +gr_message_source_sptr gr_make_message_source (size_t itemsize, gr_msg_queue_sptr msgq); class gr_message_source : public gr_sync_block { protected: gr_message_source (size_t itemsize, int msgq_limit); + gr_message_source (size_t itemsize, gr_msg_queue_sptr msgq); public: ~gr_message_source (); |