aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan West <nathan.west@okstate.edu>2015-07-06 17:48:59 -0400
committerNathan West <nathan.west@nrl.navy.mil>2015-07-06 17:48:59 -0400
commit509e79fecf6cfe7cb3ac5cf0ae43272938a48739 (patch)
treee268ab3eb51af6d1c7cd9b363abb155890db4f82
parentcmake: add GR_MODULE(zeromq...) (diff)
downloadgnuradio-509e79fecf6cfe7cb3ac5cf0ae43272938a48739.tar.xz
gnuradio-509e79fecf6cfe7cb3ac5cf0ae43272938a48739.zip
runtime: send messages to logger before exceptions
-rw-r--r--gnuradio-runtime/include/gnuradio/flowgraph.h1
-rw-r--r--gnuradio-runtime/lib/flowgraph.cc52
2 files changed, 43 insertions, 10 deletions
diff --git a/gnuradio-runtime/include/gnuradio/flowgraph.h b/gnuradio-runtime/include/gnuradio/flowgraph.h
index 452a20cbc..34bb08e56 100644
--- a/gnuradio-runtime/include/gnuradio/flowgraph.h
+++ b/gnuradio-runtime/include/gnuradio/flowgraph.h
@@ -26,6 +26,7 @@
#include <gnuradio/api.h>
#include <gnuradio/basic_block.h>
#include <gnuradio/io_signature.h>
+#include <gnuradio/logger.h>
#include <iostream>
namespace gr {
diff --git a/gnuradio-runtime/lib/flowgraph.cc b/gnuradio-runtime/lib/flowgraph.cc
index b9902363c..1889d7094 100644
--- a/gnuradio-runtime/lib/flowgraph.cc
+++ b/gnuradio-runtime/lib/flowgraph.cc
@@ -87,6 +87,7 @@ namespace gr {
std::stringstream msg;
msg << "cannot disconnect edge " << edge(src, dst) << ", not found";
+ GR_LOG_WARN(LOG, msg.str());
throw std::invalid_argument(msg.str());
}
@@ -100,7 +101,11 @@ namespace gr {
int ninputs, noutputs;
if(FLOWGRAPH_DEBUG)
- std::cout << "Validating block: " << (*p) << std::endl;
+ {
+ std::stringstream msg;
+ msg << "Validating block: " << (*p);
+ GR_LOG_DEBUG(LOG, msg.str());
+ }
used_ports = calc_used_ports(*p, true); // inputs
ninputs = used_ports.size();
@@ -115,6 +120,7 @@ namespace gr {
msg << "check topology failed on " << (*p)
<< " using ninputs=" << ninputs
<< ", noutputs=" << noutputs;
+ GR_LOG_ERROR(LOG, msg.str());
throw std::runtime_error(msg.str());
}
}
@@ -135,6 +141,7 @@ namespace gr {
if(port < 0) {
msg << "negative port number " << port << " is invalid";
+ GR_LOG_ERROR(LOG, msg.str());
throw std::invalid_argument(msg.str());
}
@@ -145,6 +152,7 @@ namespace gr {
msg << "(none)";
else
msg << max-1;
+ GR_LOG_ERROR(LOG, msg.str());
throw std::invalid_argument(msg.str());
}
}
@@ -153,15 +161,23 @@ namespace gr {
flowgraph::check_valid_port(const msg_endpoint &e)
{
if(FLOWGRAPH_DEBUG)
- std::cout << "check_valid_port( " << e.block() << ", " << e.port() << ")\n";
+ {
+ std::stringstream msg;
+ msg << "check_valid_port( " << e.block() << ", " << e.port() << ")";
+ GR_LOG_DEBUG(LOG, msg.str());
+ }
if(!e.block()->has_msg_port(e.port())) {
+ std::stringstream msg;
const gr::basic_block::msg_queue_map_t& msg_map = e.block()->get_msg_map();
- std::cout << "Could not find port: " << e.port() << " in:" << std::endl;
+ msg << "Could not find port: " << e.port() << " in:";
for (gr::basic_block::msg_queue_map_t::const_iterator it = msg_map.begin(); it != msg_map.end(); ++it)
- std::cout << it->first << std::endl;
- std::cout << std::endl;
- throw std::invalid_argument("invalid msg port in connect() or disconnect()");
+ msg << it->first << std::endl;
+ GR_LOG_WARN(LOG, msg.str());
+ msg.str(std::string());
+ msg << "invalid msg port in connect() or disconnect()";
+ GR_LOG_ERROR(LOG, msg.str());
+ throw std::invalid_argument(msg.str());
}
}
@@ -173,6 +189,7 @@ namespace gr {
if(p->dst() == dst) {
std::stringstream msg;
msg << "destination already in use by edge " << (*p);
+ GR_LOG_ERROR(LOG, msg.str());
throw std::invalid_argument(msg.str());
}
}
@@ -187,6 +204,7 @@ namespace gr {
std::stringstream msg;
msg << "itemsize mismatch: " << src << " using " << src_size
<< ", " << dst << " using " << dst_size;
+ GR_LOG_ERROR(LOG, msg.str());
throw std::invalid_argument(msg.str());
}
}
@@ -270,6 +288,7 @@ namespace gr {
msg << block << ": insufficient connected "
<< (check_inputs ? "input ports " : "output ports ")
<< "(" << min_ports << " needed, " << nports << " connected)";
+ GR_LOG_ERROR(LOG, msg.str());
throw std::runtime_error(msg.str());
}
@@ -277,6 +296,7 @@ namespace gr {
msg << block << ": too many connected "
<< (check_inputs ? "input ports " : "output ports ")
<< "(" << max_ports << " allowed, " << nports << " connected)";
+ GR_LOG_ERROR(LOG, msg.str());
throw std::runtime_error(msg.str());
}
@@ -286,6 +306,7 @@ namespace gr {
msg << block << ": missing connection "
<< (check_inputs ? "to input port " : "from output port ")
<< i;
+ GR_LOG_ERROR(LOG, msg.str());
throw std::runtime_error(msg.str());
}
}
@@ -476,19 +497,24 @@ namespace gr {
basic_block_vector_t blocks(calc_downstream_blocks(block));
for(basic_block_viter_t p = blocks.begin(); p != blocks.end(); p++) {
+ std::stringstream msg;
switch((*p)->color()) {
case basic_block::WHITE:
topological_dfs_visit(*p, output);
break;
case basic_block::GREY:
- throw std::runtime_error("flow graph has loops!");
+ msg << "flow graph has loops!";
+ GR_LOG_ERROR(LOG, msg.str());
+ throw std::runtime_error(msg.str());
case basic_block::BLACK:
continue;
default:
- throw std::runtime_error("invalid color on block!");
+ msg << "invalid color on block!";
+ GR_LOG_ERROR(LOG, msg.str());
+ throw std::runtime_error(msg.str());
}
}
@@ -503,7 +529,10 @@ namespace gr {
check_valid_port(dst);
for(msg_edge_viter_t p = d_msg_edges.begin(); p != d_msg_edges.end(); p++) {
if(p->src() == src && p->dst() == dst){
- throw std::runtime_error("connect called on already connected edge!");
+ std::stringstream msg;
+ msg << "connect called on already connected edge!";
+ GR_LOG_ERROR(LOG, msg.str());
+ throw std::runtime_error(msg.str());
}
}
d_msg_edges.push_back(msg_edge(src,dst));
@@ -520,7 +549,10 @@ namespace gr {
return;
}
}
- throw std::runtime_error("disconnect called on non-connected edge!");
+ std::stringstream msg;
+ msg << "disconnect called on non-connected edge!";
+ GR_LOG_ERROR(LOG, msg.str());
+ throw std::runtime_error(msg.str());
}
std::string