move initialization of extractor config into main method and out out extraction logic
This commit is contained in:
parent
a15450af91
commit
dc7f21513a
37
extract.cpp
37
extract.cpp
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
Copyright (c) 2014, Project OSRM, Dennis Luxen, others
|
Copyright (c) 2015, Project OSRM, Dennis Luxen, others
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
@ -26,17 +26,46 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "extractor/extractor.hpp"
|
#include "extractor/extractor.hpp"
|
||||||
|
#include "extractor/extractor_options.hpp"
|
||||||
#include "Util/simple_logger.hpp"
|
#include "Util/simple_logger.hpp"
|
||||||
|
|
||||||
int main (int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return Extractor().Run(argc, argv);
|
LogPolicy::GetInstance().Unmute();
|
||||||
|
ExtractorConfig extractor_config;
|
||||||
|
|
||||||
|
if (!ExtractorOptions::ParseArguments(argc, argv, extractor_config))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
ExtractorOptions::GenerateOutputFilesNames(extractor_config);
|
||||||
|
|
||||||
|
if (1 > extractor_config.requested_num_threads)
|
||||||
|
{
|
||||||
|
SimpleLogger().Write(logWARNING) << "Number of threads must be 1 or larger";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!boost::filesystem::is_regular_file(extractor_config.input_path))
|
||||||
|
{
|
||||||
|
SimpleLogger().Write(logWARNING)
|
||||||
|
<< "Input file " << extractor_config.input_path.string() << " not found!";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!boost::filesystem::is_regular_file(extractor_config.profile_path))
|
||||||
|
{
|
||||||
|
SimpleLogger().Write(logWARNING) << "Profile " << extractor_config.profile_path.string()
|
||||||
|
<< " not found!";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return extractor().run(extractor_config);
|
||||||
}
|
}
|
||||||
catch (const std::exception &e)
|
catch (const std::exception &e)
|
||||||
{
|
{
|
||||||
SimpleLogger().Write(logWARNING) << "[exception] " << e.what();
|
SimpleLogger().Write(logWARNING) << "[exception] " << e.what();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include "extraction_node.hpp"
|
#include "extraction_node.hpp"
|
||||||
#include "extraction_way.hpp"
|
#include "extraction_way.hpp"
|
||||||
#include "extractor_callbacks.hpp"
|
#include "extractor_callbacks.hpp"
|
||||||
#include "extractor_options.hpp"
|
|
||||||
#include "restriction_parser.hpp"
|
#include "restriction_parser.hpp"
|
||||||
#include "scripting_environment.hpp"
|
#include "scripting_environment.hpp"
|
||||||
|
|
||||||
@ -63,41 +62,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
int Extractor::Run(int argc, char *argv[])
|
int extractor::run(const ExtractorConfig &extractor_config)
|
||||||
{
|
{
|
||||||
ExtractorConfig extractor_config;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
LogPolicy::GetInstance().Unmute();
|
LogPolicy::GetInstance().Unmute();
|
||||||
TIMER_START(extracting);
|
TIMER_START(extracting);
|
||||||
|
|
||||||
if (!ExtractorOptions::ParseArguments(argc, argv, extractor_config))
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
ExtractorOptions::GenerateOutputFilesNames(extractor_config);
|
|
||||||
|
|
||||||
if (1 > extractor_config.requested_num_threads)
|
|
||||||
{
|
|
||||||
SimpleLogger().Write(logWARNING) << "Number of threads must be 1 or larger";
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!boost::filesystem::is_regular_file(extractor_config.input_path))
|
|
||||||
{
|
|
||||||
SimpleLogger().Write(logWARNING)
|
|
||||||
<< "Input file " << extractor_config.input_path.string() << " not found!";
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!boost::filesystem::is_regular_file(extractor_config.profile_path))
|
|
||||||
{
|
|
||||||
SimpleLogger().Write(logWARNING) << "Profile " << extractor_config.profile_path.string()
|
|
||||||
<< " not found!";
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const unsigned recommended_num_threads = tbb::task_scheduler_init::default_num_threads();
|
const unsigned recommended_num_threads = tbb::task_scheduler_init::default_num_threads();
|
||||||
const auto number_of_threads =
|
const auto number_of_threads =
|
||||||
std::min(recommended_num_threads, extractor_config.requested_num_threads);
|
std::min(recommended_num_threads, extractor_config.requested_num_threads);
|
||||||
@ -236,8 +207,7 @@ int Extractor::Run(int argc, char *argv[])
|
|||||||
TIMER_STOP(parsing);
|
TIMER_STOP(parsing);
|
||||||
SimpleLogger().Write() << "Parsing finished after " << TIMER_SEC(parsing) << " seconds";
|
SimpleLogger().Write() << "Parsing finished after " << TIMER_SEC(parsing) << " seconds";
|
||||||
|
|
||||||
SimpleLogger().Write() << "Raw input contains "
|
SimpleLogger().Write() << "Raw input contains " << number_of_nodes.load() << " nodes, "
|
||||||
<< number_of_nodes.load() << " nodes, "
|
|
||||||
<< number_of_ways.load() << " ways, and "
|
<< number_of_ways.load() << " ways, and "
|
||||||
<< number_of_relations.load() << " relations, and "
|
<< number_of_relations.load() << " relations, and "
|
||||||
<< number_of_others.load() << " unknown entities";
|
<< number_of_others.load() << " unknown entities";
|
||||||
|
@ -1,13 +1,37 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Copyright (c) 2015, Project OSRM, Dennis Luxen, others
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
Redistributions of source code must retain the above copyright notice, this list
|
||||||
|
of conditions and the following disclaimer.
|
||||||
|
Redistributions in binary form must reproduce the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef EXTRACTOR_HPP
|
#ifndef EXTRACTOR_HPP
|
||||||
#define EXTRACTOR_HPP
|
#define EXTRACTOR_HPP
|
||||||
|
|
||||||
#include <string>
|
#include "extractor_options.hpp"
|
||||||
|
|
||||||
#include <boost/filesystem.hpp>
|
struct extractor
|
||||||
|
|
||||||
/** \brief Class of 'extract' utility. */
|
|
||||||
struct Extractor
|
|
||||||
{
|
{
|
||||||
int Run(int argc, char *argv[]);
|
int run(const ExtractorConfig &extractor_config);
|
||||||
};
|
};
|
||||||
#endif /* EXTRACTOR_HPP */
|
#endif /* EXTRACTOR_HPP */
|
||||||
|
@ -28,12 +28,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#ifndef EXTRACTOR_OPTIONS_HPP
|
#ifndef EXTRACTOR_OPTIONS_HPP
|
||||||
#define EXTRACTOR_OPTIONS_HPP
|
#define EXTRACTOR_OPTIONS_HPP
|
||||||
|
|
||||||
#include "extractor.hpp"
|
#include <boost/filesystem.hpp>
|
||||||
|
|
||||||
struct ExtractorConfig
|
struct ExtractorConfig
|
||||||
{
|
{
|
||||||
ExtractorConfig() noexcept : requested_num_threads(0) {}
|
ExtractorConfig() noexcept : requested_num_threads(0) {}
|
||||||
unsigned requested_num_threads;
|
|
||||||
boost::filesystem::path config_file_path;
|
boost::filesystem::path config_file_path;
|
||||||
boost::filesystem::path input_path;
|
boost::filesystem::path input_path;
|
||||||
boost::filesystem::path profile_path;
|
boost::filesystem::path profile_path;
|
||||||
@ -41,6 +40,8 @@ struct ExtractorConfig
|
|||||||
std::string output_file_name;
|
std::string output_file_name;
|
||||||
std::string restriction_file_name;
|
std::string restriction_file_name;
|
||||||
std::string timestamp_file_name;
|
std::string timestamp_file_name;
|
||||||
|
|
||||||
|
unsigned requested_num_threads;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ExtractorOptions
|
struct ExtractorOptions
|
||||||
|
Loading…
Reference in New Issue
Block a user