grpc 第三方依赖 就是grpc的 third_party 文件夹
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

56 lines
1.7 KiB

#include <fcntl.h>
#include <unistd.h>
#include <cstdlib>
#include <ostream>
#include "google/protobuf/io/zero_copy_stream_impl.h"
#include "google/protobuf/text_format.h"
#include "foo/bar.pb.h"
#include "foo/bar.pb.validate.h"
int main(const int nargs, const char** const args) {
if (nargs <= 1) {
std::cout << "No inputs provided; exiting" << std::endl;
return EXIT_SUCCESS;
}
int success_count = 0;
for (int i = 1; i < nargs; ++i) {
pgv::example::foo::Bars bars;
const auto filename = args[i];
const auto fd = ::open(filename, O_RDONLY);
if (fd < 0) {
std::cerr << "Failed to open file '" << filename << "'" << std::endl;
continue;
}
google::protobuf::io::FileInputStream input(fd);
input.SetCloseOnDelete(true);
if (!google::protobuf::TextFormat::Parse(&input, &bars)) {
std::cerr << "Failed to parse file '" << filename << "' as a "
<< bars.GetDescriptor()->full_name() << " textproto" << std::endl;
return EXIT_FAILURE;
}
pgv::ValidationMsg error_message;
if (Validate(bars, &error_message)) {
std::cout << "Successfully validated file '" << filename << "' as a "
<< bars.GetDescriptor()->full_name() << " textproto"
<< std::endl;
++success_count;
} else {
std::cerr << "Failed to validate file '" << filename << "' as a "
<< bars.GetDescriptor()->full_name()
<< " textproto: " << error_message << std::endl;
}
}
const int failure_count = nargs - 1 - success_count;
if (failure_count != 0) {
std::cerr << "Failed to validate " << failure_count << " file"
<< (failure_count == 1 ? "" : "s") << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}