diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2013-04-02 16:02:33 -0700 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2013-04-02 16:02:33 -0700 |
commit | eea870b1dd9c5b90dfa7d94e6a15ffe44cfbee7f (patch) | |
tree | af3aa889c94cff9c503edefeaf19cb3635693bfb /gruel/src/lib/msg/msg_queue.cc | |
parent | e648165dcc7609524681b5eaf9620798b75b8420 (diff) | |
parent | 9acf35715fbb8aca5a991a3f41965db8f4cde683 (diff) |
Merge branch 'runtime-gruel' into next
Conflicts:
gnuradio-runtime/lib/CMakeLists.txt
Diffstat (limited to 'gruel/src/lib/msg/msg_queue.cc')
-rw-r--r-- | gruel/src/lib/msg/msg_queue.cc | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/gruel/src/lib/msg/msg_queue.cc b/gruel/src/lib/msg/msg_queue.cc deleted file mode 100644 index a0b120e40d..0000000000 --- a/gruel/src/lib/msg/msg_queue.cc +++ /dev/null @@ -1,103 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 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 GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <gruel/msg_queue.h> -#include <stdexcept> - -using namespace pmt; - -namespace gruel { - - msg_queue_sptr - make_msg_queue(unsigned int limit) - { - return msg_queue_sptr(new msg_queue(limit)); - } - - msg_queue::msg_queue(unsigned int limit) - : d_limit(limit) - { - } - - msg_queue::~msg_queue() - { - flush(); - } - - void - msg_queue::insert_tail(pmt_t msg) - { - gruel::scoped_lock guard(d_mutex); - - while (full_p()) - d_not_full.wait(guard); - - d_msgs.push_back(msg); - d_not_empty.notify_one(); - } - - pmt_t - msg_queue::delete_head() - { - gruel::scoped_lock guard(d_mutex); - - while (empty_p()) - d_not_empty.wait(guard); - - pmt_t m(d_msgs.front()); - d_msgs.pop_front(); - - if (d_limit > 0) // Unlimited length queues never block on write - d_not_full.notify_one(); - - return m; - } - - pmt_t - msg_queue::delete_head_nowait() - { - gruel::scoped_lock guard(d_mutex); - - if (empty_p()) - return pmt_t(); - - pmt_t m(d_msgs.front()); - d_msgs.pop_front(); - - if (d_limit > 0) // Unlimited length queues never block on write - d_not_full.notify_one(); - - return m; - } - - void - msg_queue::flush() - { - while (delete_head_nowait() != pmt_t()) - ; - } - -} /* namespace gruel */ |