diff --git a/Library/OSRM.h b/Library/OSRM.h index f5d605d25..61568f2b8 100644 --- a/Library/OSRM.h +++ b/Library/OSRM.h @@ -28,21 +28,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef OSRM_H #define OSRM_H -#include "../DataStructures/QueryEdge.h" -#include "../Plugins/BasePlugin.h" -#include "../Server/Http/Reply.h" +#include + #include "../Server/DataStructures/RouteParameters.h" -#include "../Server/DataStructures/SharedBarriers.h" -#include "../Server/DataStructures/BaseDataFacade.h" +#include "../Server/Http/Reply.h" #include "../Util/ProgramOptions.h" #include "../Util/ServerPaths.h" -#include +class OSRM_impl; - -class OSRM : boost::noncopyable { +class OSRM { private: - typedef boost::unordered_map PluginMap; + OSRM_impl * OSRM_pimpl_; public: OSRM( const ServerPaths & paths, @@ -50,14 +47,6 @@ public: ); ~OSRM(); void RunQuery(RouteParameters & route_parameters, http::Reply & reply); - -private: - void RegisterPlugin(BasePlugin * plugin); - PluginMap plugin_map; - bool use_shared_memory; - SharedBarriers barrier; - //base class pointer to the objects - BaseDataFacade * query_data_facade; }; -#endif //OSRM_H +#endif // OSRM_H diff --git a/Library/OSRM.cpp b/Library/OSRM_impl.cpp similarity index 89% rename from Library/OSRM.cpp rename to Library/OSRM_impl.cpp index 41b3e67b3..448823d94 100644 --- a/Library/OSRM.cpp +++ b/Library/OSRM_impl.cpp @@ -26,6 +26,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "OSRM.h" +#include "OSRM_impl.h" #include "../Plugins/HelloWorldPlugin.h" #include "../Plugins/LocatePlugin.h" @@ -36,21 +37,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../Server/DataStructures/InternalDataFacade.h" #include "../Server/DataStructures/SharedDataFacade.h" -// #include "../Util/InputFileUtil.h" -// #include "../Util/OSRMException.h" -// #include "../Util/SimpleLogger.h" #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -OSRM::OSRM( const ServerPaths & server_paths, const bool use_shared_memory ) +OSRM_impl::OSRM_impl( const ServerPaths & server_paths, const bool use_shared_memory ) : use_shared_memory(use_shared_memory) { @@ -88,13 +78,13 @@ OSRM::OSRM( const ServerPaths & server_paths, const bool use_shared_memory ) ); } -OSRM::~OSRM() { +OSRM_impl::~OSRM_impl() { BOOST_FOREACH(PluginMap::value_type & plugin_pointer, plugin_map) { delete plugin_pointer.second; } } -void OSRM::RegisterPlugin(BasePlugin * plugin) { +void OSRM_impl::RegisterPlugin(BasePlugin * plugin) { SimpleLogger().Write() << "loaded plugin: " << plugin->GetDescriptor(); if( plugin_map.find(plugin->GetDescriptor()) != plugin_map.end() ) { delete plugin_map.find(plugin->GetDescriptor())->second; @@ -102,7 +92,7 @@ void OSRM::RegisterPlugin(BasePlugin * plugin) { plugin_map.emplace(plugin->GetDescriptor(), plugin); } -void OSRM::RunQuery(RouteParameters & route_parameters, http::Reply & reply) { +void OSRM_impl::RunQuery(RouteParameters & route_parameters, http::Reply & reply) { const PluginMap::const_iterator & iter = plugin_map.find( route_parameters.service ); @@ -152,3 +142,18 @@ void OSRM::RunQuery(RouteParameters & route_parameters, http::Reply & reply) { reply = http::Reply::StockReply(http::Reply::badRequest); } } + +// proxy code for compilation firewall + +OSRM::OSRM( + const ServerPaths & paths, + const bool use_shared_memory +) : OSRM_pimpl_(new OSRM_impl(paths, use_shared_memory)) { } + +OSRM::~OSRM() { + delete OSRM_pimpl_; +} + +void OSRM::RunQuery(RouteParameters & route_parameters, http::Reply & reply) { + OSRM_pimpl_->RunQuery(route_parameters, reply); +} diff --git a/Library/OSRM_impl.h b/Library/OSRM_impl.h new file mode 100644 index 000000000..45c6c2c11 --- /dev/null +++ b/Library/OSRM_impl.h @@ -0,0 +1,63 @@ +/* + +Copyright (c) 2013, 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 OSRM_IMPL_H +#define OSRM_IMPL_H + +#include "../DataStructures/QueryEdge.h" +#include "../Plugins/BasePlugin.h" +#include "../Server/Http/Reply.h" +#include "../Server/DataStructures/RouteParameters.h" +#include "../Server/DataStructures/SharedBarriers.h" +#include "../Server/DataStructures/BaseDataFacade.h" +#include "../Util/ProgramOptions.h" +#include "../Util/ServerPaths.h" + +#include + + +class OSRM_impl : boost::noncopyable { +private: + typedef boost::unordered_map PluginMap; +public: + OSRM_impl( + const ServerPaths & paths, + const bool use_shared_memory + ); + virtual ~OSRM_impl(); + void RunQuery(RouteParameters & route_parameters, http::Reply & reply); + +private: + void RegisterPlugin(BasePlugin * plugin); + PluginMap plugin_map; + bool use_shared_memory; + SharedBarriers barrier; + //base class pointer to the objects + BaseDataFacade * query_data_facade; +}; + +#endif //OSRM_IMPL_H