34 #define BOOST_TIMER_ENABLE_DEPRECATED
37 #include <boost/scoped_ptr.hpp>
38 #include <boost/program_options.hpp>
39 #if BOOST_VERSION < 107200
40 #include <boost/progress.hpp>
42 #include <boost/timer/progress_display.hpp>
44 #include <boost/regex.hpp>
51 namespace po = boost::program_options;
73 std::string::size_type pos =
inbag.find_last_of(
'.');
74 if (pos == std::string::npos)
84 po::options_description desc(
"Allowed options");
87 (
"help,h",
"produce help message")
88 (
"quiet,q",
"suppress console output")
89 (
"plugin,p", po::value<std::string>()->default_value(
"rosbag/AesCbcEncryptor"),
"encryptor name")
90 (
"param,r", po::value<std::string>()->default_value(
"*"),
"encryptor parameter")
91 (
"bz2,j",
"use BZ2 compression")
92 (
"lz4",
"use lz4 compression")
93 (
"inbag", po::value<std::string>(),
"bag file to encrypt")
94 (
"outbag,o", po::value<std::string>(),
"bag file encrypted")
97 po::positional_options_description p;
100 po::variables_map vm;
104 po::store(po::command_line_parser(argc, argv).options(desc).positional(p).
run(), vm);
106 catch (
const boost::program_options::invalid_command_line_syntax& e)
110 catch (
const boost::program_options::unknown_option& e)
115 if (vm.count(
"help"))
117 std::cout << desc << std::endl;
121 if (vm.count(
"quiet"))
123 if (vm.count(
"plugin"))
124 opts.
plugin = vm[
"plugin"].as<std::string>();
125 if (vm.count(
"param"))
126 opts.
param = vm[
"param"].as<std::string>();
131 if (vm.count(
"inbag"))
132 opts.
inbag = vm[
"inbag"].as<std::string>();
135 if (vm.count(
"outbag"))
136 opts.
outbag = vm[
"outbag"].as<std::string>();
149 default:
return "Unknown";
157 std::cout <<
"Output bag: " << options.
outbag <<
"\n";
158 std::cout <<
"Encryption: " << options.
plugin <<
":" << options.
param <<
"\n";
168 #if BOOST_VERSION < 107200
169 boost::scoped_ptr<boost::progress_display> progress;
171 boost::scoped_ptr<boost::timer::progress_display> progress;
174 #if BOOST_VERSION < 107200
175 progress.reset(
new boost::progress_display(view.
size(), std::cout,
"Progress:\n ",
" ",
" "));
177 progress.reset(
new boost::timer::progress_display(view.
size(), std::cout,
"Progress:\n ",
" ",
" "));
181 outbag.
write(it->getTopic(), it->getTime(), *it, it->getConnectionHeader());
190 int main(
int argc,
char** argv)
200 ROS_ERROR(
"Error reading options: %s", ex.what());
203 catch (
const boost::regex_error& ex)
205 ROS_ERROR(
"Error reading options: %s\n", ex.what());