Skip to content

Commit

Permalink
replaced contigouos output data with collection of small'ish sub bloc…
Browse files Browse the repository at this point in the history
…ks. saves (re-)allocations. also removed a remaining stringstream
  • Loading branch information
DennisOSRM committed Nov 14, 2013
1 parent 8b6fe69 commit cabaad4
Show file tree
Hide file tree
Showing 17 changed files with 393 additions and 307 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/Util/UUID.cpp UUID.cpp.alwaysbuild

add_custom_target(UUIDConfigure DEPENDS ${CMAKE_SOURCE_DIR}/Util/UUID.cpp )

set(BOOST_COMPONENTS filesystem program_options regex system thread)
set(BOOST_COMPONENTS filesystem iostreams program_options regex system thread)

configure_file(Util/GitDescription.cpp.in ${CMAKE_SOURCE_DIR}/Util/GitDescription.cpp)
file(GLOB ExtractorGlob Extractor/*.cpp)
Expand Down
1 change: 1 addition & 0 deletions Descriptors/BaseDescriptor.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "../DataStructures/HashTable.h"
#include "../DataStructures/PhantomNodes.h"
#include "../DataStructures/RawRouteData.h"
#include "../Server/Http/Reply.h"
#include "../Util/StringUtil.h"
#include "../typedefs.h"

Expand Down
24 changes: 17 additions & 7 deletions Descriptors/DescriptionFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,21 +95,31 @@ void DescriptionFactory::AppendSegment(

void DescriptionFactory::AppendEncodedPolylineString(
const bool return_encoded,
std::string & output
std::vector<std::string> & output
) {
std::string temp;
if(return_encoded) {
polyline_compressor.printEncodedString(pathDescription, output);
polyline_compressor.printEncodedString(pathDescription, temp);
} else {
polyline_compressor.printUnencodedString(pathDescription, output);
polyline_compressor.printUnencodedString(pathDescription, temp);
}
output.push_back(temp);
}

void DescriptionFactory::AppendEncodedPolylineString(std::string &output) const {
polyline_compressor.printEncodedString(pathDescription, output);
void DescriptionFactory::AppendEncodedPolylineString(
std::vector<std::string> &output
) const {
std::string temp;
polyline_compressor.printEncodedString(pathDescription, temp);
output.push_back(temp);
}

void DescriptionFactory::AppendUnencodedPolylineString(std::string &output) const {
polyline_compressor.printUnencodedString(pathDescription, output);
void DescriptionFactory::AppendUnencodedPolylineString(
std::vector<std::string>& output
) const {
std::string temp;
polyline_compressor.printUnencodedString(pathDescription, temp);
output.push_back(temp);
}

// void DescriptionFactory::Run(const SearchEngine &sEngine, const unsigned zoomLevel) {
Expand Down
6 changes: 3 additions & 3 deletions Descriptors/DescriptionFactory.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,15 @@ class DescriptionFactory {
DescriptionFactory();
virtual ~DescriptionFactory();
double GetBearing(const FixedPointCoordinate& C, const FixedPointCoordinate& B) const;
void AppendEncodedPolylineString(std::string &output) const;
void AppendUnencodedPolylineString(std::string &output) const;
void AppendEncodedPolylineString(std::vector<std::string> &output) const;
void AppendUnencodedPolylineString(std::vector<std::string> &output) const;
void AppendSegment(const FixedPointCoordinate & coordinate, const _PathData & data);
void BuildRouteSummary(const double distance, const unsigned time);
void SetStartSegment(const PhantomNode & start_phantom);
void SetEndSegment(const PhantomNode & start_phantom);
void AppendEncodedPolylineString(
const bool return_encoded,
std::string & output
std::vector<std::string> & output
);

template<class DataFacadeT>
Expand Down
26 changes: 13 additions & 13 deletions Descriptors/GPXDescriptor.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,31 +49,31 @@ class GPXDescriptor : public BaseDescriptor<DataFacadeT> {
PhantomNodes &phantomNodes,
const DataFacadeT * facade
) {
reply.content += ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
reply.content +=
reply.content.push_back("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
reply.content.push_back(
"<gpx creator=\"OSRM Routing Engine\" version=\"1.1\" "
"xmlns=\"http://www.topografix.com/GPX/1/1\" "
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
"xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 gpx.xsd"
"\">";
reply.content +=
"\">");
reply.content.push_back(
"<metadata><copyright author=\"Project OSRM\"><license>Data (c)"
" OpenStreetMap contributors (ODbL)</license></copyright>"
"</metadata>";
reply.content += "<rte>";
"</metadata>");
reply.content.push_back("<rte>");
bool found_route = (rawRoute.lengthOfShortestPath != INT_MAX) &&
(rawRoute.computedShortestPath.size() );
if( found_route ) {
convertInternalLatLonToString(
phantomNodes.startPhantom.location.lat,
tmp
);
reply.content += "<rtept lat=\"" + tmp + "\" ";
reply.content.push_back("<rtept lat=\"" + tmp + "\" ");
convertInternalLatLonToString(
phantomNodes.startPhantom.location.lon,
tmp
);
reply.content += "lon=\"" + tmp + "\"></rtept>";
reply.content.push_back("lon=\"" + tmp + "\"></rtept>");

BOOST_FOREACH(
const _PathData & pathData,
Expand All @@ -82,22 +82,22 @@ class GPXDescriptor : public BaseDescriptor<DataFacadeT> {
current = facade->GetCoordinateOfNode(pathData.node);

convertInternalLatLonToString(current.lat, tmp);
reply.content += "<rtept lat=\"" + tmp + "\" ";
reply.content.push_back("<rtept lat=\"" + tmp + "\" ");
convertInternalLatLonToString(current.lon, tmp);
reply.content += "lon=\"" + tmp + "\"></rtept>";
reply.content.push_back("lon=\"" + tmp + "\"></rtept>");
}
convertInternalLatLonToString(
phantomNodes.targetPhantom.location.lat,
tmp
);
reply.content += "<rtept lat=\"" + tmp + "\" ";
reply.content.push_back("<rtept lat=\"" + tmp + "\" ");
convertInternalLatLonToString(
phantomNodes.targetPhantom.location.lon,
tmp
);
reply.content += "lon=\"" + tmp + "\"></rtept>";
reply.content.push_back("lon=\"" + tmp + "\"></rtept>");
}
reply.content += "</rte></gpx>";
reply.content.push_back("</rte></gpx>");
}
};
#endif // GPX_DESCRIPTOR_H_

0 comments on commit cabaad4

Please sign in to comment.