File indexing completed on 2025-01-31 10:11:57
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_SERVICE_H__
0013 #define GOOGLE_PROTOBUF_COMPILER_JAVA_SERVICE_H__
0014
0015 #include "google/protobuf/compiler/java/generator_factory.h"
0016 #include "google/protobuf/descriptor.h"
0017
0018 namespace google {
0019 namespace protobuf {
0020 namespace compiler {
0021 namespace java {
0022 class Context;
0023 class ClassNameResolver;
0024 }
0025 }
0026 namespace io {
0027 class Printer;
0028 }
0029 }
0030 }
0031
0032 namespace google {
0033 namespace protobuf {
0034 namespace compiler {
0035 namespace java {
0036
0037 class ImmutableServiceGenerator : public ServiceGenerator {
0038 public:
0039 ImmutableServiceGenerator(const ServiceDescriptor* descriptor,
0040 Context* context);
0041 ImmutableServiceGenerator(const ImmutableServiceGenerator&) = delete;
0042 ImmutableServiceGenerator& operator=(const ImmutableServiceGenerator&) =
0043 delete;
0044 ~ImmutableServiceGenerator() override;
0045
0046 void Generate(io::Printer* printer) override;
0047
0048 private:
0049
0050 void GenerateGetDescriptorForType(io::Printer* printer);
0051
0052
0053 void GenerateInterface(io::Printer* printer);
0054
0055
0056 void GenerateNewReflectiveServiceMethod(io::Printer* printer);
0057
0058
0059 void GenerateNewReflectiveBlockingServiceMethod(io::Printer* printer);
0060
0061
0062 void GenerateAbstractMethods(io::Printer* printer);
0063
0064
0065 void GenerateCallMethod(io::Printer* printer);
0066
0067
0068 void GenerateCallBlockingMethod(io::Printer* printer);
0069
0070
0071 void GenerateGetPrototype(RequestOrResponse which, io::Printer* printer);
0072
0073
0074 void GenerateStub(io::Printer* printer);
0075
0076
0077
0078 void GenerateMethodSignature(io::Printer* printer,
0079 const MethodDescriptor* method,
0080 IsAbstract is_abstract);
0081
0082
0083 void GenerateBlockingStub(io::Printer* printer);
0084
0085
0086 void GenerateBlockingMethodSignature(io::Printer* printer,
0087 const MethodDescriptor* method);
0088
0089
0090 std::string GetOutput(const MethodDescriptor* method);
0091
0092 Context* context_;
0093 ClassNameResolver* name_resolver_;
0094 };
0095
0096 }
0097 }
0098 }
0099 }
0100
0101 #endif