1 #ifndef NET_GRPC_COMPILER_JAVA_GENERATOR_H_
2 #define NET_GRPC_COMPILER_JAVA_GENERATOR_H_
3 
4 #include <stdlib.h>  // for abort()
5 #include <iostream>
6 #include <string>
7 
8 #include <google/protobuf/io/zero_copy_stream.h>
9 #include <google/protobuf/descriptor.h>
10 
11 class LogHelper {
12   std::ostream* os;
13 
14  public:
LogHelper(std::ostream * os)15   LogHelper(std::ostream* os) : os(os) {}
~LogHelper()16   ~LogHelper() {
17     *os << std::endl;
18     ::abort();
19   }
get_os()20   std::ostream& get_os() {
21     return *os;
22   }
23 };
24 
25 // Abort the program after logging the mesage if the given condition is not
26 // true. Otherwise, do nothing.
27 #define GRPC_CODEGEN_CHECK(x) !(x) && LogHelper(&std::cerr).get_os() \
28                              << "CHECK FAILED: " << __FILE__ << ":" \
29                              << __LINE__ << ": "
30 
31 // Abort the program after logging the mesage.
32 #define GRPC_CODEGEN_FAIL GRPC_CODEGEN_CHECK(false)
33 
34 using namespace std;
35 
36 namespace java_grpc_generator {
37 
38 enum ProtoFlavor {
39   NORMAL, LITE, NANO
40 };
41 
42 // Returns the package name of the gRPC services defined in the given file.
43 string ServiceJavaPackage(const google::protobuf::FileDescriptor* file, bool nano);
44 
45 // Returns the name of the outer class that wraps in all the generated code for
46 // the given service.
47 string ServiceClassName(const google::protobuf::ServiceDescriptor* service);
48 
49 // Writes the generated service interface into the given ZeroCopyOutputStream
50 void GenerateService(const google::protobuf::ServiceDescriptor* service,
51                      google::protobuf::io::ZeroCopyOutputStream* out,
52                      ProtoFlavor flavor,
53                      bool disable_version);
54 
55 }  // namespace java_grpc_generator
56 
57 #endif  // NET_GRPC_COMPILER_JAVA_GENERATOR_H_
58