diff options
author | Angelo Mantellini <manangel@cisco.com> | 2019-03-15 14:16:15 +0100 |
---|---|---|
committer | Angelo Mantellini <manangel@cisco.com> | 2019-03-15 17:38:46 +0100 |
commit | a1e949253043fe1a644f71cef0572ede30b752be (patch) | |
tree | 6cbe2288a82942014edb074d9b194771446b29b7 /apps/src/higet.cc | |
parent | e1033d6fac2ad70891a96695284b2c1e7013c91c (diff) |
[HICN-114] Update Hicn Http Server to hicn fdio stack
Change-Id: Ic808c93c14f905fd403e60be82ce319757e84c9f
Signed-off-by: Angelo Mantellini <manangel@cisco.com>
Diffstat (limited to 'apps/src/higet.cc')
-rwxr-xr-x | apps/src/higet.cc | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/apps/src/higet.cc b/apps/src/higet.cc deleted file mode 100755 index d2ef818cb..000000000 --- a/apps/src/higet.cc +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <hicn/transport/http/client_connection.h> - -#include <fstream> - -typedef std::chrono::time_point<std::chrono::system_clock> Time; -typedef std::chrono::milliseconds TimeDuration; - -Time t1; - -#define DEFAULT_BETA 0.99 -#define DEFAULT_GAMMA 0.07 - -namespace hicnet { - -namespace http { - -typedef struct { - std::string file_name; - bool print_headers; - std::string producer_certificate; -} Configuration; - -void processResponse(Configuration &conf, transport::http::HTTPResponse &&response) { - - auto &payload = response.getPayload(); - - if (conf.file_name != "-") { - std::cerr << "Saving to: " << conf.file_name << " " << payload.size() << "kB" << std::endl; - } - - Time t3 = std::chrono::system_clock::now(); - - std::streambuf *buf; - std::ofstream of; - - if (conf.file_name != "-") { - of.open(conf.file_name, std::ofstream::binary); - buf = of.rdbuf(); - } else { - buf = std::cout.rdbuf(); - } - - std::ostream out(buf); - - if (conf.print_headers) { - auto &headers = response.getHeaders(); - out << "HTTP/" << response.getHttpVersion() << " " << response.getStatusCode() << " " << response.getStatusString() - << "\n"; - for (auto &h : headers) { - out << h.first << ": " << h.second << "\n"; - } - out << "\n"; - } - - out.write((char *)payload.data(), payload.size()); - of.close(); - - Time t2 = std::chrono::system_clock::now();; - TimeDuration dt = std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1); - TimeDuration dt3 = std::chrono::duration_cast<std::chrono::milliseconds>(t3 - t1); - long msec = (long)dt.count(); - long msec3 = (long)dt3.count(); - std::cerr << "Elapsed Time: " << msec / 1000.0 << " seconds -- " << payload.size() * 8 / msec / 1000.0 - << "[Mbps] -- " << payload.size() * 8 / msec3 / 1000.0 << "[Mbps]" << std::endl; - -} - -void usage(char *program_name) { - std::cerr << "USAGE:" << std::endl; - std::cerr << "\t" << program_name << " [OPTION]... [URL]..." << std::endl; - std::cerr << "OPTIONS:" << std::endl; - std::cerr << "\t" << "-O filename write documents to FILE" << std::endl; - std::cerr << "\t" << "-S print server response" << std::endl; - std::cerr << "EXAMPLE:" << std::endl; - std::cerr << "\t" << program_name << " -O - http://origin/index.html" << std::endl; - exit(EXIT_FAILURE); -} - -int main(int argc, char **argv) { - -#ifdef _WIN32 - WSADATA wsaData = { 0 }; - WSAStartup(MAKEWORD(2, 2), &wsaData); -#endif - - Configuration conf; - conf.file_name = ""; - conf.print_headers = false; - conf.producer_certificate = ""; - - std::string name("http://webserver/sintel/mpd"); - - int opt; - while ((opt = getopt(argc, argv, "O:Sc:")) != -1) { - switch (opt) { - case 'O': - conf.file_name = optarg; - break; - case 'S': - conf.print_headers = true; - break; - case 'c': - conf.producer_certificate = optarg; - break; - case 'h': - default: - usage(argv[0]); - break; - } - } - - if (argv[optind] == 0) { - std::cerr << "Using default name " << name << std::endl; - } else { - name = argv[optind]; - } - - if (conf.file_name.empty()) { - conf.file_name = name.substr(1 + name.find_last_of("/")); - } - - std::map<std::string, std::string> headers = { - {"Host", "localhost"}, - {"User-Agent", "higet/1.0"} - }; - - transport::http::HTTPClientConnection connection; - if (!conf.producer_certificate.empty()) { - connection.setCertificate(conf.producer_certificate); - } - - t1 = std::chrono::system_clock::now(); - - connection.get(name, headers); - processResponse(conf, connection.response()); - -#ifdef _WIN32 - WSACleanup(); -#endif - - return EXIT_SUCCESS; -} - -} // end namespace http - -} // end namespace hicnet - -int main(int argc, char **argv) { - return hicnet::http::main(argc, argv); -} |