clean up a bit

pull/3109/head
Yang Gao 10 years ago
parent ea33d60f71
commit 178fdf82e1
  1. 4
      cpp/route_guide/Makefile
  2. 73
      cpp/route_guide/helper.cc
  3. 50
      cpp/route_guide/helper.h
  4. 40
      cpp/route_guide/route_guide_client.cc
  5. 43
      cpp/route_guide/route_guide_server.cc

@ -43,10 +43,10 @@ vpath %.proto $(PROTOS_PATH)
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 $@
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 $@
%.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 <fstream>
#include <iostream>
#include <memory>
#include <random>
#include <sstream>
#include <string>
#include <thread>
@ -47,6 +45,7 @@
#include <grpc++/create_channel.h>
#include <grpc++/status.h>
#include <grpc++/stream.h>
#include "helper.h"
#include "route_guide.pb.h"
using grpc::ChannelArguments;
@ -86,23 +85,6 @@ RouteNote MakeRouteNote(const std::string& message,
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 {
public:
RouteGuideClient(std::shared_ptr<ChannelInterface> channel)
@ -219,8 +201,8 @@ class RouteGuideClient {
void Shutdown() { stub_.reset(); }
void FillFeatureList(const std::string& db_path) {
::FillFeatureList(db_path, &feature_list_);
void FillFeatureList(const std::string& db) {
examples::ParseDb(db, &feature_list_);
}
private:
@ -258,20 +240,8 @@ int main(int argc, char** argv) {
RouteGuideClient guide(
grpc::CreateChannel("localhost:50051", ChannelArguments()));
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);
}
}
}
guide.FillFeatureList(db_path);
std::string db = examples::GetDbFileContent(argc, argv);
guide.FillFeatureList(db);
guide.GetFeature();
guide.ListFeatures();

@ -34,10 +34,8 @@
#include <algorithm>
#include <chrono>
#include <cmath>
#include <fstream>
#include <iostream>
#include <memory>
#include <sstream>
#include <string>
#include <thread>
@ -47,6 +45,7 @@
#include <grpc++/server_context.h>
#include <grpc++/status.h>
#include <grpc++/stream.h>
#include "helper.h"
#include "route_guide.pb.h"
using grpc::Server;
@ -64,18 +63,13 @@ using examples::RouteNote;
using examples::RouteGuide;
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) {
return num * 3.1415926 /180;
}
float GetDistance(const Point& start, const Point& end) {
const float kCoordFactor = 10000000.0;
float lat_1 = start.latitude() / kCoordFactor;
float lat_2 = end.latitude() / kCoordFactor;
float lon_1 = start.longitude() / kCoordFactor;
@ -93,19 +87,6 @@ float GetDistance(const Point& start, const Point& end) {
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,
const std::vector<Feature>& feature_list) {
for (const Feature& f : feature_list) {
@ -119,8 +100,8 @@ std::string GetFeatureName(const Point& point,
class RouteGuideImpl final : public RouteGuide::Service {
public:
RouteGuideImpl(const std::string& db_path) {
FillFeatureList(db_path, &feature_list_);
RouteGuideImpl(const std::string& db) {
examples::ParseDb(db, &feature_list_);
}
Status GetFeature(ServerContext* context, const Point* point,
@ -218,20 +199,8 @@ void RunServer(const std::string& db_path) {
int main(int argc, char** argv) {
grpc_init();
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);
}
}
}
RunServer(db_path);
std::string db = examples::GetDbFileContent(argc, argv);
RunServer(db);
grpc_shutdown();
return 0;

Loading…
Cancel
Save