MCPcopy Create free account
hub / github.com/Tencent/phxrpc / GenerateServiceImplHpp

Method GenerateServiceImplHpp

codegen/service_code_render.cpp:132–204  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130}
131
132void ServiceCodeRender::GenerateServiceImplHpp(SyntaxTree *stree, FILE *write, const bool is_uthread_mode) {
133 char file_name[128]{'\0'};
134 name_render_.GetServiceImplFileName(stree->GetName(), file_name, sizeof(file_name));
135
136 string buffer;
137 name_render_.GetCopyright("phxrpc_pb2service", stree->GetProtoFile(), &buffer, false);
138
139 fprintf(write, "/* %s.h\n", file_name);
140 fprintf(write, "%s", buffer.c_str());
141 fprintf(write, "*/\n");
142 fprintf(write, "\n");
143
144 fprintf(write, "#pragma once\n");
145
146 fprintf(write, "\n");
147 if (is_uthread_mode) {
148 fprintf(write, "#include \"phxrpc/network.h\"\n");
149 fprintf(write, "\n");
150 }
151
152 name_render_.GetMessageFileName(stree->GetProtoFile(), file_name, sizeof(file_name));
153 fprintf(write, "#include \"%s.h\"\n", file_name);
154
155 name_render_.GetServiceFileName(stree->GetName(), file_name, sizeof(file_name));
156 fprintf(write, "#include \"%s.h\"\n", file_name);
157
158 fprintf(write, "\n");
159 fprintf(write, "\n");
160
161 char service_impl_name[128]{'\0'}, base_name[128]{'\0'}, config_name[128]{'\0'};
162 name_render_.GetServiceClassName(stree->GetName(), base_name, sizeof(base_name));
163 name_render_.GetServiceImplClassName(stree->GetName(), service_impl_name, sizeof(service_impl_name));
164 name_render_.GetServerConfigClassName(stree->GetName(), config_name, sizeof(config_name));
165
166 fprintf(write, "class %s;\n", config_name);
167 fprintf(write, "\n");
168
169 fprintf(write, "typedef struct tagServiceArgs {\n");
170 fprintf(write, " %s *config;\n", config_name);
171 fprintf(write, " // you can add other arguments here and initiate in main().\n");
172 fprintf(write, "} ServiceArgs_t;\n");
173 fprintf(write, "\n");
174
175 fprintf(write, "class %s : public %s {\n", service_impl_name, base_name);
176 fprintf(write, " public:\n");
177 if (!is_uthread_mode) {
178 fprintf(write, " %s(ServiceArgs_t &app_args);\n", service_impl_name);
179 } else {
180 fprintf(write, " %s(ServiceArgs_t &app_args,\n", service_impl_name);
181 fprintf(write, " phxrpc::UThreadEpollScheduler *worker_uthread_scheduler);\n");
182 }
183 fprintf(write, " virtual ~%s() override;\n", service_impl_name);
184 fprintf(write, "\n");
185
186 SyntaxFuncVector *flist{stree->GetFuncList()};
187 auto fit(flist->cbegin());
188 for (; flist->cend() != fit; ++fit) {
189 string buffer;

Callers 1

Proto2ServiceFunction · 0.80

Calls 10

GetNameMethod · 0.80
GetCopyrightMethod · 0.80
GetProtoFileMethod · 0.80
GetMessageFileNameMethod · 0.80
GetServiceFileNameMethod · 0.80
GetServiceClassNameMethod · 0.80
GetFuncListMethod · 0.80

Tested by

no test coverage detected