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

Method GenerateServiceImplCpp

codegen/service_code_render.cpp:206–270  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

204}
205
206void ServiceCodeRender::GenerateServiceImplCpp(SyntaxTree *stree, FILE *write, const bool is_uthread_mode) {
207 char file_name[128]{'\0'}, config_file[128]{'\0'};
208 name_render_.GetServiceImplFileName(stree->GetName(), file_name, sizeof(file_name));
209 name_render_.GetServerConfigFileName(stree->GetName(), config_file, sizeof(config_file));
210
211 string buffer;
212 name_render_.GetCopyright("phxrpc_pb2service", stree->GetProtoFile(), &buffer, false);
213
214 fprintf(write, "/* %s.cpp\n", file_name);
215 fprintf(write, "%s", buffer.c_str());
216 fprintf(write, "*/\n");
217 fprintf(write, "\n");
218
219 fprintf(write, "#include \"%s.h\"\n", file_name);
220 fprintf(write, "\n");
221
222 fprintf(write, "#include \"phxrpc/file.h\"\n");
223 fprintf(write, "\n");
224
225 fprintf(write, "#include \"%s.h\"\n", config_file);
226
227 name_render_.GetMessageFileName(stree->GetProtoFile(), file_name, sizeof(file_name));
228 fprintf(write, "#include \"%s.h\"\n", file_name);
229
230 fprintf(write, "\n\n");
231 fprintf(write, "using namespace std;\n");
232 fprintf(write, "\n\n");
233
234 char service_impl_name[128]{0}, config_name[128]{0};
235 name_render_.GetServiceImplClassName(stree->GetName(), service_impl_name, sizeof(service_impl_name));
236 name_render_.GetServerConfigClassName(stree->GetName(), config_name, sizeof(config_name));
237
238 if (!is_uthread_mode) {
239 fprintf(write, "%s::%s(ServiceArgs_t &app_args)\n", service_impl_name, service_impl_name);
240 fprintf(write, " : args_(app_args) {\n");
241 } else {
242 fprintf(write, "%s::%s(ServiceArgs_t &app_args,\n", service_impl_name, service_impl_name);
243 fprintf(write, " phxrpc::UThreadEpollScheduler *const worker_uthread_scheduler)\n");
244 fprintf(write, " : args_(app_args),\n");
245 fprintf(write, " worker_uthread_scheduler_(worker_uthread_scheduler) {\n");
246 }
247 fprintf(write, "}\n");
248 fprintf(write, "\n");
249
250 fprintf(write, "%s::~%s() {\n", service_impl_name, service_impl_name);
251 fprintf(write, "}\n");
252 fprintf(write, "\n");
253
254 SyntaxFuncVector *flist{stree->GetFuncList()};
255 auto fit(flist->cbegin());
256 for (; flist->cend() != fit; ++fit) {
257 string buffer;
258 GetServiceFuncDeclaration(stree, &(*fit), 0, 1, 1, &buffer);
259 fprintf(write, "%s {\n", buffer.c_str());
260
261 if (0 == strcmp("PHXEcho", fit->GetName())) {
262 fprintf(write, " resp->set_value(req.value());\n");
263 fprintf(write, " return 0;\n");

Callers 1

Proto2ServiceFunction · 0.80

Calls 9

GetNameMethod · 0.80
GetCopyrightMethod · 0.80
GetProtoFileMethod · 0.80
GetMessageFileNameMethod · 0.80
GetFuncListMethod · 0.80

Tested by

no test coverage detected