Adapts Hint encoding and decoding to new fixed data facade

This commit is contained in:
Daniel J. Hofmann 2016-03-14 14:21:18 +01:00 committed by Patrick Niklaus
parent ca130e1dc4
commit 79cf1880fc
2 changed files with 20 additions and 8 deletions

View File

@ -40,18 +40,20 @@ namespace osrm
namespace engine
{
// Fwd. decls.
namespace datafacade
{
struct BaseDataFacade;
}
// Is returned as a temporary identifier for snapped coodinates
struct Hint
{
PhantomNode phantom;
std::uint32_t data_checksum;
template <typename DataFacadeT>
bool IsValid(const util::Coordinate new_input_coordinates, DataFacadeT &facade) const
{
return phantom.IsValid(facade.GetNumberOfNodes(), new_input_coordinates) &&
facade.GetCheckSum() == data_checksum;
}
bool IsValid(const util::Coordinate new_input_coordinates,
const datafacade::BaseDataFacade &facade) const;
std::string ToBase64() const;
static Hint FromBase64(const std::string &base64Hint);

View File

@ -1,5 +1,6 @@
#include "engine/hint.hpp"
#include "engine/object_encoder.hpp"
#include "engine/datafacade/datafacade_base.hpp"
#include <boost/assert.hpp>
@ -7,14 +8,23 @@ namespace osrm
{
namespace engine
{
bool Hint::IsValid(const util::Coordinate new_input_coordinates,
const datafacade::BaseDataFacade &facade) const
{
auto is_same_input_coordinate = new_input_coordinates.lon == phantom.input_location.lon &&
new_input_coordinates.lat == phantom.input_location.lat;
return is_same_input_coordinate && phantom.IsValid(facade.GetNumberOfNodes()) &&
facade.GetCheckSum() == data_checksum;
}
std::string Hint::ToBase64() const { return encodeBase64(*this); }
Hint Hint::FromBase64(const std::string &base64Hint)
{
BOOST_ASSERT_MSG(base64Hint.size() == ENCODED_HINT_SIZE, "Hint has invalid size");
auto decoded = decodeBase64<Hint>(base64Hint);
return decoded;
return decodeBase64<Hint>(base64Hint);
}
}
}