in cpp/code/flight.cc [135:159]
arrow::Result<arrow::flight::FlightInfo> MakeFlightInfo(
const arrow::fs::FileInfo& file_info) {
ARROW_ASSIGN_OR_RAISE(auto input, root_->OpenInputFile(file_info));
ARROW_ASSIGN_OR_RAISE(
auto reader,
parquet::arrow::OpenFile(std::move(input), arrow::default_memory_pool()));
std::shared_ptr<arrow::Schema> schema;
ARROW_RETURN_NOT_OK(reader->GetSchema(&schema));
auto descriptor = arrow::flight::FlightDescriptor::Path({file_info.base_name()});
arrow::flight::FlightEndpoint endpoint;
endpoint.ticket.ticket = file_info.base_name();
arrow::flight::Location location;
ARROW_ASSIGN_OR_RAISE(location,
arrow::flight::Location::ForGrpcTcp("localhost", port()));
endpoint.locations.push_back(location);
int64_t total_records = reader->parquet_reader()->metadata()->num_rows();
int64_t total_bytes = file_info.size();
return arrow::flight::FlightInfo::Make(*schema, descriptor, {endpoint}, total_records,
total_bytes);
}