clean up a bit
This commit is contained in:
parent
ea33d60f71
commit
178fdf82e1
|
|
@ -43,10 +43,10 @@ vpath %.proto $(PROTOS_PATH)
|
||||||
|
|
||||||
all: system-check route_guide_client route_guide_server
|
all: system-check route_guide_client route_guide_server
|
||||||
|
|
||||||
route_guide_client: route_guide.pb.o route_guide_client.o
|
route_guide_client: route_guide.pb.o route_guide_client.o helper.o
|
||||||
$(CXX) $^ $(LDFLAGS) -o $@
|
$(CXX) $^ $(LDFLAGS) -o $@
|
||||||
|
|
||||||
route_guide_server: route_guide.pb.o route_guide_server.o
|
route_guide_server: route_guide.pb.o route_guide_server.o helper.o
|
||||||
$(CXX) $^ $(LDFLAGS) -o $@
|
$(CXX) $^ $(LDFLAGS) -o $@
|
||||||
|
|
||||||
%.pb.cc: %.proto
|
%.pb.cc: %.proto
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright 2015, Google Inc.
|
||||||
|
* 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.
|
||||||
|
* * Neither the name of Google Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
* OWNER 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include "route_guide.pb.h"
|
||||||
|
|
||||||
|
namespace examples {
|
||||||
|
|
||||||
|
std::string GetDbFileContent(int argc, char** argv) {
|
||||||
|
std::string db_path;
|
||||||
|
std::string arg_str("--db_path");
|
||||||
|
if (argc > 1) {
|
||||||
|
std::string argv_1 = argv[1];
|
||||||
|
size_t start_position = argv_1.find(arg_str);
|
||||||
|
if (start_position != std::string::npos) {
|
||||||
|
start_position += arg_str.size();
|
||||||
|
if (argv_1[start_position] == ' ' ||
|
||||||
|
argv_1[start_position] == '=') {
|
||||||
|
db_path = argv_1.substr(start_position + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::ifstream db_file(db_path);
|
||||||
|
if (!db_file.is_open()) {
|
||||||
|
std::cout << "Failed to open " << db_path << std::endl;
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
std::stringstream db;
|
||||||
|
db << db_file.rdbuf();
|
||||||
|
return db.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ParseDb(const std::string& db, std::vector<Feature>* feature_list) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace examples
|
||||||
|
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright 2015, Google Inc.
|
||||||
|
* 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.
|
||||||
|
* * Neither the name of Google Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
* OWNER 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 GRPC_COMMON_CPP_ROUTE_GUIDE_HELPER_H_
|
||||||
|
#define GRPC_COMMON_CPP_ROUTE_GUIDE_HELPER_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace examples {
|
||||||
|
class Feature;
|
||||||
|
|
||||||
|
std::string GetDbFileContent(int argc, char** argv);
|
||||||
|
|
||||||
|
void ParseDb(const std::string& db, std::vector<Feature>* feature_list);
|
||||||
|
|
||||||
|
} // namespace examples
|
||||||
|
|
||||||
|
#endif // GRPC_COMMON_CPP_ROUTE_GUIDE_HELPER_H_
|
||||||
|
|
||||||
|
|
@ -32,11 +32,9 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <fstream>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <random>
|
#include <random>
|
||||||
#include <sstream>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
|
|
@ -47,6 +45,7 @@
|
||||||
#include <grpc++/create_channel.h>
|
#include <grpc++/create_channel.h>
|
||||||
#include <grpc++/status.h>
|
#include <grpc++/status.h>
|
||||||
#include <grpc++/stream.h>
|
#include <grpc++/stream.h>
|
||||||
|
#include "helper.h"
|
||||||
#include "route_guide.pb.h"
|
#include "route_guide.pb.h"
|
||||||
|
|
||||||
using grpc::ChannelArguments;
|
using grpc::ChannelArguments;
|
||||||
|
|
@ -86,23 +85,6 @@ RouteNote MakeRouteNote(const std::string& message,
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ParseDb(const std::string& stream, std::vector<Feature>* feature_list) {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
void FillFeatureList(const std::string& db_path, std::vector<Feature>* feature_list) {
|
|
||||||
if (db_path.empty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
std::ifstream db_file(db_path);
|
|
||||||
if (!db_file.is_open()) {
|
|
||||||
std::cout << "Failed to open " << db_path << std::endl;
|
|
||||||
}
|
|
||||||
std::stringstream db;
|
|
||||||
db << db_file.rdbuf();
|
|
||||||
ParseDb(db.str(), feature_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
class RouteGuideClient {
|
class RouteGuideClient {
|
||||||
public:
|
public:
|
||||||
RouteGuideClient(std::shared_ptr<ChannelInterface> channel)
|
RouteGuideClient(std::shared_ptr<ChannelInterface> channel)
|
||||||
|
|
@ -219,8 +201,8 @@ class RouteGuideClient {
|
||||||
|
|
||||||
void Shutdown() { stub_.reset(); }
|
void Shutdown() { stub_.reset(); }
|
||||||
|
|
||||||
void FillFeatureList(const std::string& db_path) {
|
void FillFeatureList(const std::string& db) {
|
||||||
::FillFeatureList(db_path, &feature_list_);
|
examples::ParseDb(db, &feature_list_);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -258,20 +240,8 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
RouteGuideClient guide(
|
RouteGuideClient guide(
|
||||||
grpc::CreateChannel("localhost:50051", ChannelArguments()));
|
grpc::CreateChannel("localhost:50051", ChannelArguments()));
|
||||||
std::string db_path;
|
std::string db = examples::GetDbFileContent(argc, argv);
|
||||||
std::string arg_str("--db_path");
|
guide.FillFeatureList(db);
|
||||||
if (argc > 1) {
|
|
||||||
std::string argv_1 = argv[1];
|
|
||||||
size_t start_position = argv_1.find(arg_str);
|
|
||||||
if (start_position != std::string::npos) {
|
|
||||||
start_position += arg_str.size();
|
|
||||||
if (argv_1[start_position] == ' ' ||
|
|
||||||
argv_1[start_position] == '=') {
|
|
||||||
db_path = argv_1.substr(start_position + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
guide.FillFeatureList(db_path);
|
|
||||||
|
|
||||||
guide.GetFeature();
|
guide.GetFeature();
|
||||||
guide.ListFeatures();
|
guide.ListFeatures();
|
||||||
|
|
|
||||||
|
|
@ -34,10 +34,8 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <fstream>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <sstream>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
|
|
@ -47,6 +45,7 @@
|
||||||
#include <grpc++/server_context.h>
|
#include <grpc++/server_context.h>
|
||||||
#include <grpc++/status.h>
|
#include <grpc++/status.h>
|
||||||
#include <grpc++/stream.h>
|
#include <grpc++/stream.h>
|
||||||
|
#include "helper.h"
|
||||||
#include "route_guide.pb.h"
|
#include "route_guide.pb.h"
|
||||||
|
|
||||||
using grpc::Server;
|
using grpc::Server;
|
||||||
|
|
@ -64,18 +63,13 @@ using examples::RouteNote;
|
||||||
using examples::RouteGuide;
|
using examples::RouteGuide;
|
||||||
using std::chrono::system_clock;
|
using std::chrono::system_clock;
|
||||||
|
|
||||||
const float kCoordFactor = 10000000.0;
|
|
||||||
|
|
||||||
bool ParseDb(const std::string& stream, std::vector<Feature>* feature_list) {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
float ConvertToRadians(float num) {
|
float ConvertToRadians(float num) {
|
||||||
return num * 3.1415926 /180;
|
return num * 3.1415926 /180;
|
||||||
}
|
}
|
||||||
|
|
||||||
float GetDistance(const Point& start, const Point& end) {
|
float GetDistance(const Point& start, const Point& end) {
|
||||||
|
const float kCoordFactor = 10000000.0;
|
||||||
float lat_1 = start.latitude() / kCoordFactor;
|
float lat_1 = start.latitude() / kCoordFactor;
|
||||||
float lat_2 = end.latitude() / kCoordFactor;
|
float lat_2 = end.latitude() / kCoordFactor;
|
||||||
float lon_1 = start.longitude() / kCoordFactor;
|
float lon_1 = start.longitude() / kCoordFactor;
|
||||||
|
|
@ -93,19 +87,6 @@ float GetDistance(const Point& start, const Point& end) {
|
||||||
return R * c;
|
return R * c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FillFeatureList(const std::string& db_path, std::vector<Feature>* feature_list) {
|
|
||||||
if (db_path.empty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
std::ifstream db_file(db_path);
|
|
||||||
if (!db_file.is_open()) {
|
|
||||||
std::cout << "Failed to open " << db_path << std::endl;
|
|
||||||
}
|
|
||||||
std::stringstream db;
|
|
||||||
db << db_file.rdbuf();
|
|
||||||
ParseDb(db.str(), feature_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string GetFeatureName(const Point& point,
|
std::string GetFeatureName(const Point& point,
|
||||||
const std::vector<Feature>& feature_list) {
|
const std::vector<Feature>& feature_list) {
|
||||||
for (const Feature& f : feature_list) {
|
for (const Feature& f : feature_list) {
|
||||||
|
|
@ -119,8 +100,8 @@ std::string GetFeatureName(const Point& point,
|
||||||
|
|
||||||
class RouteGuideImpl final : public RouteGuide::Service {
|
class RouteGuideImpl final : public RouteGuide::Service {
|
||||||
public:
|
public:
|
||||||
RouteGuideImpl(const std::string& db_path) {
|
RouteGuideImpl(const std::string& db) {
|
||||||
FillFeatureList(db_path, &feature_list_);
|
examples::ParseDb(db, &feature_list_);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status GetFeature(ServerContext* context, const Point* point,
|
Status GetFeature(ServerContext* context, const Point* point,
|
||||||
|
|
@ -218,20 +199,8 @@ void RunServer(const std::string& db_path) {
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
grpc_init();
|
grpc_init();
|
||||||
|
|
||||||
std::string db_path;
|
std::string db = examples::GetDbFileContent(argc, argv);
|
||||||
std::string arg_str("--db_path");
|
RunServer(db);
|
||||||
if (argc > 1) {
|
|
||||||
std::string argv_1 = argv[1];
|
|
||||||
size_t start_position = argv_1.find(arg_str);
|
|
||||||
if (start_position != std::string::npos) {
|
|
||||||
start_position += arg_str.size();
|
|
||||||
if (argv_1[start_position] == ' ' ||
|
|
||||||
argv_1[start_position] == '=') {
|
|
||||||
db_path = argv_1.substr(start_position + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
RunServer(db_path);
|
|
||||||
|
|
||||||
grpc_shutdown();
|
grpc_shutdown();
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue