Untitled
unknown
plain_text
3 years ago
1.5 kB
9
Indexable
#include <cassert>
#include <fstream>
#include <iostream>
#include <string_view>
#include "request_handler.h"
using namespace std;
void PrintUsage(std::ostream& stream = std::cerr) {
stream << "Usage: transport_catalogue [make_base|process_requests]\n"sv;
}
const std::string& GetBaseFileName(const json::Dict& data) {
return data.at("serialization_settings"s).AsMap().at("file"s).AsString();
}
int main(int argc, char* argv[]) {
if (argc != 2) {
PrintUsage();
return 1;
}
const std::string_view mode(argv[1]);
const auto json = json::Load(std::cin).GetRoot().AsMap();
transport_catalogue::TransportCatalogue catalogue;
transport_catalogue::TransportCatalogueHandler catalogue_handler(catalogue);
if (mode == "make_base"sv) {
const std::string& file_name = GetBaseFileName(json);
ifstream in(file_name, std::ios::binary);
json_reader::JsonIO json(in);
catalogue_handler.LoadDataFromJson(json);
catalogue_handler.SerializeData();
} else if (mode == "process_requests"sv) {
const std::string& file_name = GetBaseFileName(json);
std::ifstream in(file_name, std::ios::binary);
json_reader::JsonIO json(in);
catalogue_handler.LoadDataFromJson(json);
catalogue_handler.DeserializeData();
catalogue_handler.LoadRequestsAndAnswer(json, cout);
} else {
PrintUsage();
return 1;
}
}
Editor is loading...