Fixes abort issue in gr.top_block exception handling, improve some exception messages.
authorjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Tue, 5 Feb 2008 16:54:24 +0000 (16:54 +0000)
committerjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Tue, 5 Feb 2008 16:54:24 +0000 (16:54 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@7565 221aa14e-8319-0410-a670-987f0aec2ac5

gnuradio-core/src/lib/runtime/gr_top_block.i
gnuradio-core/src/lib/runtime/gr_top_block_impl.cc

index 4eb9db636d460fc446e308da0476ee7816ef2a5b..f48dea74e714f9190d18e739b64f2e8c6438df7e 100644 (file)
@@ -40,12 +40,12 @@ private:
 public:
   ~gr_top_block();
 
-  void start();
+  void start() throw (std::runtime_error);
   void stop();
   void wait();
   void run();
   void lock();
-  void unlock();
+  void unlock() throw (std::runtime_error);
   bool is_running();
 };
 
index ffdcbdb7adacc82dc18e8e54be2f7ee072d1a643..7a993a759a55fcad9c8916d2f2dccc9ac020af8b 100644 (file)
@@ -77,7 +77,7 @@ gr_top_block_impl::gr_top_block_impl(gr_top_block *owner)
     d_lock_count(0)
 {
   if (s_impl)
-    throw std::logic_error("gr_top_block_impl: multiple simultaneous gr_top_block's");
+    throw std::logic_error("gr_top_block_impl: multiple simultaneous gr_top_blocks not allowed");
 
   s_impl = this;
 }
@@ -95,7 +95,7 @@ gr_top_block_impl::start()
     std::cout << "start: entered " << this << std::endl;
 
   if (d_running)
-    throw std::runtime_error("already running");
+    throw std::runtime_error("top block already running or wait() not called after previous stop()");
 
   // Create new flat flow graph by flattening hierarchy
   d_ffg = d_owner->flatten();
@@ -203,7 +203,7 @@ gr_top_block_impl::restart()
     std::cout << "restart: entered" << std::endl;
 
   if (!d_running)
-    throw std::runtime_error("not running");
+    throw std::runtime_error("top block is not running");
 
   // Stop scheduler threads and wait for completion
   stop();