diff options
author | Yang Gao <yangg@google.com> | 2015-02-23 14:16:01 -0800 |
---|---|---|
committer | Yang Gao <yangg@google.com> | 2015-02-23 14:16:01 -0800 |
commit | 178fdf82e1538d3c2c34181cc66d7cb25d29096e (patch) | |
tree | 6cd7e5bb44191f7fd0b1d52a9a66b99c7a36d4d0 /cpp | |
parent | ea33d60f71980f53e20c245768efe50683170e24 (diff) |
clean up a bit
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/route_guide/Makefile | 4 | ||||
-rw-r--r-- | cpp/route_guide/helper.cc | 73 | ||||
-rw-r--r-- | cpp/route_guide/helper.h | 50 | ||||
-rw-r--r-- | cpp/route_guide/route_guide_client.cc | 40 | ||||
-rw-r--r-- | cpp/route_guide/route_guide_server.cc | 43 |
5 files changed, 136 insertions, 74 deletions
diff --git a/cpp/route_guide/Makefile b/cpp/route_guide/Makefile index fae9a9d284..131956296c 100644 --- a/cpp/route_guide/Makefile +++ b/cpp/route_guide/Makefile @@ -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 diff --git a/cpp/route_guide/helper.cc b/cpp/route_guide/helper.cc new file mode 100644 index 0000000000..a4be8bfc6c --- /dev/null +++ b/cpp/route_guide/helper.cc @@ -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 + diff --git a/cpp/route_guide/helper.h b/cpp/route_guide/helper.h new file mode 100644 index 0000000000..65c93c1d34 --- /dev/null +++ b/cpp/route_guide/helper.h @@ -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_ + diff --git a/cpp/route_guide/route_guide_client.cc b/cpp/route_guide/route_guide_client.cc index 8b4a532327..fd3d98e30a 100644 --- a/cpp/route_guide/route_guide_client.cc +++ b/cpp/route_guide/route_guide_client.cc @@ -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(); diff --git a/cpp/route_guide/route_guide_server.cc b/cpp/route_guide/route_guide_server.cc index d4ecded69b..38cd64be94 100644 --- a/cpp/route_guide/route_guide_server.cc +++ b/cpp/route_guide/route_guide_server.cc @@ -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; |