1 /**
2  * Autogenerated by Thrift for src/module.thrift
3  *
4  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5  *  @generated @nocommit
6  */
7 #include <thrift/lib/cpp2/gen/module_metadata_cpp.h>
8 #include "thrift/compiler/test/fixtures/basic-stack-arguments/gen-cpp2/module_metadata.h"
9 
10 namespace apache {
11 namespace thrift {
12 namespace detail {
13 namespace md {
14 using ThriftMetadata = ::apache::thrift::metadata::ThriftMetadata;
15 using ThriftPrimitiveType = ::apache::thrift::metadata::ThriftPrimitiveType;
16 using ThriftType = ::apache::thrift::metadata::ThriftType;
17 using ThriftService = ::apache::thrift::metadata::ThriftService;
18 using ThriftServiceContext = ::apache::thrift::metadata::ThriftServiceContext;
19 using ThriftFunctionGenerator = void (*)(ThriftMetadata&, ThriftService&);
20 
gen(ThriftMetadata & metadata)21 void EnumMetadata<::cpp2::MyEnum>::gen(ThriftMetadata& metadata) {
22   auto res = metadata.enums_ref()->emplace("module.MyEnum", ::apache::thrift::metadata::ThriftEnum{});
23   if (!res.second) {
24     return;
25   }
26   ::apache::thrift::metadata::ThriftEnum& enum_metadata = res.first->second;
27   enum_metadata.name_ref() = "module.MyEnum";
28   using EnumTraits = TEnumTraits<::cpp2::MyEnum>;
29   for (std::size_t i = 0; i < EnumTraits::size; ++i) {
30     enum_metadata.elements_ref()->emplace(static_cast<int32_t>(EnumTraits::values[i]), EnumTraits::names[i].str());
31   }
32 }
33 
34 const ::apache::thrift::metadata::ThriftStruct&
gen(ThriftMetadata & metadata)35 StructMetadata<::cpp2::MyStruct>::gen(ThriftMetadata& metadata) {
36   auto res = metadata.structs_ref()->emplace("module.MyStruct", ::apache::thrift::metadata::ThriftStruct{});
37   if (!res.second) {
38     return res.first->second;
39   }
40   ::apache::thrift::metadata::ThriftStruct& module_MyStruct = res.first->second;
41   module_MyStruct.name_ref() = "module.MyStruct";
42   module_MyStruct.is_union_ref() = false;
43   static const EncodedThriftField
44   module_MyStruct_fields[] = {
45     {1, "MyIntField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE), std::vector<ThriftConstStruct>{}},
46     {2, "MyStringField", false, std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE), std::vector<ThriftConstStruct>{}},
47   };
48   for (const auto& f : module_MyStruct_fields) {
49     ::apache::thrift::metadata::ThriftField field;
50     field.id_ref() = f.id;
51     field.name_ref() = f.name;
52     field.is_optional_ref() = f.is_optional;
53     f.metadata_type_interface->writeAndGenType(*field.type_ref(), metadata);
54     field.structured_annotations_ref() = f.structured_annotations;
55     module_MyStruct.fields_ref()->push_back(std::move(field));
56   }
57   return res.first->second;
58 }
59 
gen_hasDataById(ThriftMetadata & metadata,ThriftService & service)60 void ServiceMetadata<::cpp2::MyServiceSvIf>::gen_hasDataById(ThriftMetadata& metadata, ThriftService& service) {
61   ::apache::thrift::metadata::ThriftFunction func;
62   (void)metadata;
63   func.name_ref() = "hasDataById";
64   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE);
65   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
66   ::apache::thrift::metadata::ThriftField module_MyService_hasDataById_id_1;
67   module_MyService_hasDataById_id_1.id_ref() = 1;
68   module_MyService_hasDataById_id_1.name_ref() = "id";
69   module_MyService_hasDataById_id_1.is_optional_ref() = false;
70   auto module_MyService_hasDataById_id_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
71   module_MyService_hasDataById_id_1_type->writeAndGenType(*module_MyService_hasDataById_id_1.type_ref(), metadata);
72   func.arguments_ref()->push_back(std::move(module_MyService_hasDataById_id_1));
73   func.is_oneway_ref() = false;
74   service.functions_ref()->push_back(std::move(func));
75 }
gen_getDataById(ThriftMetadata & metadata,ThriftService & service)76 void ServiceMetadata<::cpp2::MyServiceSvIf>::gen_getDataById(ThriftMetadata& metadata, ThriftService& service) {
77   ::apache::thrift::metadata::ThriftFunction func;
78   (void)metadata;
79   func.name_ref() = "getDataById";
80   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
81   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
82   ::apache::thrift::metadata::ThriftField module_MyService_getDataById_id_1;
83   module_MyService_getDataById_id_1.id_ref() = 1;
84   module_MyService_getDataById_id_1.name_ref() = "id";
85   module_MyService_getDataById_id_1.is_optional_ref() = false;
86   auto module_MyService_getDataById_id_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
87   module_MyService_getDataById_id_1_type->writeAndGenType(*module_MyService_getDataById_id_1.type_ref(), metadata);
88   func.arguments_ref()->push_back(std::move(module_MyService_getDataById_id_1));
89   func.is_oneway_ref() = false;
90   service.functions_ref()->push_back(std::move(func));
91 }
gen_putDataById(ThriftMetadata & metadata,ThriftService & service)92 void ServiceMetadata<::cpp2::MyServiceSvIf>::gen_putDataById(ThriftMetadata& metadata, ThriftService& service) {
93   ::apache::thrift::metadata::ThriftFunction func;
94   (void)metadata;
95   func.name_ref() = "putDataById";
96   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
97   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
98   ::apache::thrift::metadata::ThriftField module_MyService_putDataById_id_1;
99   module_MyService_putDataById_id_1.id_ref() = 1;
100   module_MyService_putDataById_id_1.name_ref() = "id";
101   module_MyService_putDataById_id_1.is_optional_ref() = false;
102   auto module_MyService_putDataById_id_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
103   module_MyService_putDataById_id_1_type->writeAndGenType(*module_MyService_putDataById_id_1.type_ref(), metadata);
104   func.arguments_ref()->push_back(std::move(module_MyService_putDataById_id_1));
105   ::apache::thrift::metadata::ThriftField module_MyService_putDataById_data_2;
106   module_MyService_putDataById_data_2.id_ref() = 2;
107   module_MyService_putDataById_data_2.name_ref() = "data";
108   module_MyService_putDataById_data_2.is_optional_ref() = false;
109   auto module_MyService_putDataById_data_2_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
110   module_MyService_putDataById_data_2_type->writeAndGenType(*module_MyService_putDataById_data_2.type_ref(), metadata);
111   func.arguments_ref()->push_back(std::move(module_MyService_putDataById_data_2));
112   func.is_oneway_ref() = false;
113   service.functions_ref()->push_back(std::move(func));
114 }
gen_lobDataById(ThriftMetadata & metadata,ThriftService & service)115 void ServiceMetadata<::cpp2::MyServiceSvIf>::gen_lobDataById(ThriftMetadata& metadata, ThriftService& service) {
116   ::apache::thrift::metadata::ThriftFunction func;
117   (void)metadata;
118   func.name_ref() = "lobDataById";
119   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
120   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
121   ::apache::thrift::metadata::ThriftField module_MyService_lobDataById_id_1;
122   module_MyService_lobDataById_id_1.id_ref() = 1;
123   module_MyService_lobDataById_id_1.name_ref() = "id";
124   module_MyService_lobDataById_id_1.is_optional_ref() = false;
125   auto module_MyService_lobDataById_id_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
126   module_MyService_lobDataById_id_1_type->writeAndGenType(*module_MyService_lobDataById_id_1.type_ref(), metadata);
127   func.arguments_ref()->push_back(std::move(module_MyService_lobDataById_id_1));
128   ::apache::thrift::metadata::ThriftField module_MyService_lobDataById_data_2;
129   module_MyService_lobDataById_data_2.id_ref() = 2;
130   module_MyService_lobDataById_data_2.name_ref() = "data";
131   module_MyService_lobDataById_data_2.is_optional_ref() = false;
132   auto module_MyService_lobDataById_data_2_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
133   module_MyService_lobDataById_data_2_type->writeAndGenType(*module_MyService_lobDataById_data_2.type_ref(), metadata);
134   func.arguments_ref()->push_back(std::move(module_MyService_lobDataById_data_2));
135   func.is_oneway_ref() = true;
136   service.functions_ref()->push_back(std::move(func));
137 }
138 
gen(::apache::thrift::metadata::ThriftServiceMetadataResponse & response)139 void ServiceMetadata<::cpp2::MyServiceSvIf>::gen(::apache::thrift::metadata::ThriftServiceMetadataResponse& response) {
140   const ::apache::thrift::metadata::ThriftServiceContextRef* self = genRecurse(*response.metadata_ref(), *response.services_ref());
141   DCHECK(self != nullptr);
142   // TODO(praihan): Remove ThriftServiceContext from response. But in the meantime, we need to fill the field with the result of looking up in ThriftMetadata.
143   ::apache::thrift::metadata::ThriftServiceContext context;
144   context.module_ref() = *self->module_ref();
145   context.service_info_ref() = response.metadata_ref()->services_ref()->at(*self->service_name_ref());
146   response.context_ref() = std::move(context);
147 }
148 
genRecurse(ThriftMetadata & metadata,std::vector<ThriftServiceContextRef> & services)149 const ThriftServiceContextRef* ServiceMetadata<::cpp2::MyServiceSvIf>::genRecurse(ThriftMetadata& metadata, std::vector<ThriftServiceContextRef>& services) {
150   (void) metadata;
151   ::apache::thrift::metadata::ThriftService module_MyService;
152   module_MyService.name_ref() = "module.MyService";
153   static const ThriftFunctionGenerator functions[] = {
154     ServiceMetadata<::cpp2::MyServiceSvIf>::gen_hasDataById,
155     ServiceMetadata<::cpp2::MyServiceSvIf>::gen_getDataById,
156     ServiceMetadata<::cpp2::MyServiceSvIf>::gen_putDataById,
157     ServiceMetadata<::cpp2::MyServiceSvIf>::gen_lobDataById,
158   };
159   for (auto& function_gen : functions) {
160     function_gen(metadata, module_MyService);
161   }
162   // We need to keep the index around because a reference or iterator could be invalidated.
163   auto selfIndex = services.size();
164   services.emplace_back();
165   ThriftServiceContextRef& context = services[selfIndex];
166   metadata.services_ref()->emplace("module.MyService", std::move(module_MyService));
167   context.service_name_ref() = "module.MyService";
168   ::apache::thrift::metadata::ThriftModuleContext module;
169   module.name_ref() = "module";
170   context.module_ref() = std::move(module);
171   return &context;
172 }
gen_hasDataById(ThriftMetadata & metadata,ThriftService & service)173 void ServiceMetadata<::cpp2::MyServiceFastSvIf>::gen_hasDataById(ThriftMetadata& metadata, ThriftService& service) {
174   ::apache::thrift::metadata::ThriftFunction func;
175   (void)metadata;
176   func.name_ref() = "hasDataById";
177   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BOOL_TYPE);
178   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
179   ::apache::thrift::metadata::ThriftField module_MyServiceFast_hasDataById_id_1;
180   module_MyServiceFast_hasDataById_id_1.id_ref() = 1;
181   module_MyServiceFast_hasDataById_id_1.name_ref() = "id";
182   module_MyServiceFast_hasDataById_id_1.is_optional_ref() = false;
183   auto module_MyServiceFast_hasDataById_id_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
184   module_MyServiceFast_hasDataById_id_1_type->writeAndGenType(*module_MyServiceFast_hasDataById_id_1.type_ref(), metadata);
185   func.arguments_ref()->push_back(std::move(module_MyServiceFast_hasDataById_id_1));
186   func.is_oneway_ref() = false;
187   service.functions_ref()->push_back(std::move(func));
188 }
gen_getDataById(ThriftMetadata & metadata,ThriftService & service)189 void ServiceMetadata<::cpp2::MyServiceFastSvIf>::gen_getDataById(ThriftMetadata& metadata, ThriftService& service) {
190   ::apache::thrift::metadata::ThriftFunction func;
191   (void)metadata;
192   func.name_ref() = "getDataById";
193   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
194   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
195   ::apache::thrift::metadata::ThriftField module_MyServiceFast_getDataById_id_1;
196   module_MyServiceFast_getDataById_id_1.id_ref() = 1;
197   module_MyServiceFast_getDataById_id_1.name_ref() = "id";
198   module_MyServiceFast_getDataById_id_1.is_optional_ref() = false;
199   auto module_MyServiceFast_getDataById_id_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
200   module_MyServiceFast_getDataById_id_1_type->writeAndGenType(*module_MyServiceFast_getDataById_id_1.type_ref(), metadata);
201   func.arguments_ref()->push_back(std::move(module_MyServiceFast_getDataById_id_1));
202   func.is_oneway_ref() = false;
203   service.functions_ref()->push_back(std::move(func));
204 }
gen_putDataById(ThriftMetadata & metadata,ThriftService & service)205 void ServiceMetadata<::cpp2::MyServiceFastSvIf>::gen_putDataById(ThriftMetadata& metadata, ThriftService& service) {
206   ::apache::thrift::metadata::ThriftFunction func;
207   (void)metadata;
208   func.name_ref() = "putDataById";
209   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
210   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
211   ::apache::thrift::metadata::ThriftField module_MyServiceFast_putDataById_id_1;
212   module_MyServiceFast_putDataById_id_1.id_ref() = 1;
213   module_MyServiceFast_putDataById_id_1.name_ref() = "id";
214   module_MyServiceFast_putDataById_id_1.is_optional_ref() = false;
215   auto module_MyServiceFast_putDataById_id_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
216   module_MyServiceFast_putDataById_id_1_type->writeAndGenType(*module_MyServiceFast_putDataById_id_1.type_ref(), metadata);
217   func.arguments_ref()->push_back(std::move(module_MyServiceFast_putDataById_id_1));
218   ::apache::thrift::metadata::ThriftField module_MyServiceFast_putDataById_data_2;
219   module_MyServiceFast_putDataById_data_2.id_ref() = 2;
220   module_MyServiceFast_putDataById_data_2.name_ref() = "data";
221   module_MyServiceFast_putDataById_data_2.is_optional_ref() = false;
222   auto module_MyServiceFast_putDataById_data_2_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
223   module_MyServiceFast_putDataById_data_2_type->writeAndGenType(*module_MyServiceFast_putDataById_data_2.type_ref(), metadata);
224   func.arguments_ref()->push_back(std::move(module_MyServiceFast_putDataById_data_2));
225   func.is_oneway_ref() = false;
226   service.functions_ref()->push_back(std::move(func));
227 }
gen_lobDataById(ThriftMetadata & metadata,ThriftService & service)228 void ServiceMetadata<::cpp2::MyServiceFastSvIf>::gen_lobDataById(ThriftMetadata& metadata, ThriftService& service) {
229   ::apache::thrift::metadata::ThriftFunction func;
230   (void)metadata;
231   func.name_ref() = "lobDataById";
232   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_VOID_TYPE);
233   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
234   ::apache::thrift::metadata::ThriftField module_MyServiceFast_lobDataById_id_1;
235   module_MyServiceFast_lobDataById_id_1.id_ref() = 1;
236   module_MyServiceFast_lobDataById_id_1.name_ref() = "id";
237   module_MyServiceFast_lobDataById_id_1.is_optional_ref() = false;
238   auto module_MyServiceFast_lobDataById_id_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_I64_TYPE);
239   module_MyServiceFast_lobDataById_id_1_type->writeAndGenType(*module_MyServiceFast_lobDataById_id_1.type_ref(), metadata);
240   func.arguments_ref()->push_back(std::move(module_MyServiceFast_lobDataById_id_1));
241   ::apache::thrift::metadata::ThriftField module_MyServiceFast_lobDataById_data_2;
242   module_MyServiceFast_lobDataById_data_2.id_ref() = 2;
243   module_MyServiceFast_lobDataById_data_2.name_ref() = "data";
244   module_MyServiceFast_lobDataById_data_2.is_optional_ref() = false;
245   auto module_MyServiceFast_lobDataById_data_2_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
246   module_MyServiceFast_lobDataById_data_2_type->writeAndGenType(*module_MyServiceFast_lobDataById_data_2.type_ref(), metadata);
247   func.arguments_ref()->push_back(std::move(module_MyServiceFast_lobDataById_data_2));
248   func.is_oneway_ref() = true;
249   service.functions_ref()->push_back(std::move(func));
250 }
251 
gen(::apache::thrift::metadata::ThriftServiceMetadataResponse & response)252 void ServiceMetadata<::cpp2::MyServiceFastSvIf>::gen(::apache::thrift::metadata::ThriftServiceMetadataResponse& response) {
253   const ::apache::thrift::metadata::ThriftServiceContextRef* self = genRecurse(*response.metadata_ref(), *response.services_ref());
254   DCHECK(self != nullptr);
255   // TODO(praihan): Remove ThriftServiceContext from response. But in the meantime, we need to fill the field with the result of looking up in ThriftMetadata.
256   ::apache::thrift::metadata::ThriftServiceContext context;
257   context.module_ref() = *self->module_ref();
258   context.service_info_ref() = response.metadata_ref()->services_ref()->at(*self->service_name_ref());
259   response.context_ref() = std::move(context);
260 }
261 
genRecurse(ThriftMetadata & metadata,std::vector<ThriftServiceContextRef> & services)262 const ThriftServiceContextRef* ServiceMetadata<::cpp2::MyServiceFastSvIf>::genRecurse(ThriftMetadata& metadata, std::vector<ThriftServiceContextRef>& services) {
263   (void) metadata;
264   ::apache::thrift::metadata::ThriftService module_MyServiceFast;
265   module_MyServiceFast.name_ref() = "module.MyServiceFast";
266   static const ThriftFunctionGenerator functions[] = {
267     ServiceMetadata<::cpp2::MyServiceFastSvIf>::gen_hasDataById,
268     ServiceMetadata<::cpp2::MyServiceFastSvIf>::gen_getDataById,
269     ServiceMetadata<::cpp2::MyServiceFastSvIf>::gen_putDataById,
270     ServiceMetadata<::cpp2::MyServiceFastSvIf>::gen_lobDataById,
271   };
272   for (auto& function_gen : functions) {
273     function_gen(metadata, module_MyServiceFast);
274   }
275   // We need to keep the index around because a reference or iterator could be invalidated.
276   auto selfIndex = services.size();
277   services.emplace_back();
278   ThriftServiceContextRef& context = services[selfIndex];
279   metadata.services_ref()->emplace("module.MyServiceFast", std::move(module_MyServiceFast));
280   context.service_name_ref() = "module.MyServiceFast";
281   ::apache::thrift::metadata::ThriftModuleContext module;
282   module.name_ref() = "module";
283   context.module_ref() = std::move(module);
284   return &context;
285 }
gen_getDataByKey0(ThriftMetadata & metadata,ThriftService & service)286 void ServiceMetadata<::cpp2::DbMixedStackArgumentsSvIf>::gen_getDataByKey0(ThriftMetadata& metadata, ThriftService& service) {
287   ::apache::thrift::metadata::ThriftFunction func;
288   (void)metadata;
289   func.name_ref() = "getDataByKey0";
290   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE);
291   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
292   ::apache::thrift::metadata::ThriftField module_DbMixedStackArguments_getDataByKey0_key_1;
293   module_DbMixedStackArguments_getDataByKey0_key_1.id_ref() = 1;
294   module_DbMixedStackArguments_getDataByKey0_key_1.name_ref() = "key";
295   module_DbMixedStackArguments_getDataByKey0_key_1.is_optional_ref() = false;
296   auto module_DbMixedStackArguments_getDataByKey0_key_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
297   module_DbMixedStackArguments_getDataByKey0_key_1_type->writeAndGenType(*module_DbMixedStackArguments_getDataByKey0_key_1.type_ref(), metadata);
298   func.arguments_ref()->push_back(std::move(module_DbMixedStackArguments_getDataByKey0_key_1));
299   func.is_oneway_ref() = false;
300   service.functions_ref()->push_back(std::move(func));
301 }
gen_getDataByKey1(ThriftMetadata & metadata,ThriftService & service)302 void ServiceMetadata<::cpp2::DbMixedStackArgumentsSvIf>::gen_getDataByKey1(ThriftMetadata& metadata, ThriftService& service) {
303   ::apache::thrift::metadata::ThriftFunction func;
304   (void)metadata;
305   func.name_ref() = "getDataByKey1";
306   auto func_ret_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_BINARY_TYPE);
307   func_ret_type->writeAndGenType(*func.return_type_ref(), metadata);
308   ::apache::thrift::metadata::ThriftField module_DbMixedStackArguments_getDataByKey1_key_1;
309   module_DbMixedStackArguments_getDataByKey1_key_1.id_ref() = 1;
310   module_DbMixedStackArguments_getDataByKey1_key_1.name_ref() = "key";
311   module_DbMixedStackArguments_getDataByKey1_key_1.is_optional_ref() = false;
312   auto module_DbMixedStackArguments_getDataByKey1_key_1_type = std::make_unique<Primitive>(ThriftPrimitiveType::THRIFT_STRING_TYPE);
313   module_DbMixedStackArguments_getDataByKey1_key_1_type->writeAndGenType(*module_DbMixedStackArguments_getDataByKey1_key_1.type_ref(), metadata);
314   func.arguments_ref()->push_back(std::move(module_DbMixedStackArguments_getDataByKey1_key_1));
315   func.is_oneway_ref() = false;
316   service.functions_ref()->push_back(std::move(func));
317 }
318 
gen(::apache::thrift::metadata::ThriftServiceMetadataResponse & response)319 void ServiceMetadata<::cpp2::DbMixedStackArgumentsSvIf>::gen(::apache::thrift::metadata::ThriftServiceMetadataResponse& response) {
320   const ::apache::thrift::metadata::ThriftServiceContextRef* self = genRecurse(*response.metadata_ref(), *response.services_ref());
321   DCHECK(self != nullptr);
322   // TODO(praihan): Remove ThriftServiceContext from response. But in the meantime, we need to fill the field with the result of looking up in ThriftMetadata.
323   ::apache::thrift::metadata::ThriftServiceContext context;
324   context.module_ref() = *self->module_ref();
325   context.service_info_ref() = response.metadata_ref()->services_ref()->at(*self->service_name_ref());
326   response.context_ref() = std::move(context);
327 }
328 
genRecurse(ThriftMetadata & metadata,std::vector<ThriftServiceContextRef> & services)329 const ThriftServiceContextRef* ServiceMetadata<::cpp2::DbMixedStackArgumentsSvIf>::genRecurse(ThriftMetadata& metadata, std::vector<ThriftServiceContextRef>& services) {
330   (void) metadata;
331   ::apache::thrift::metadata::ThriftService module_DbMixedStackArguments;
332   module_DbMixedStackArguments.name_ref() = "module.DbMixedStackArguments";
333   static const ThriftFunctionGenerator functions[] = {
334     ServiceMetadata<::cpp2::DbMixedStackArgumentsSvIf>::gen_getDataByKey0,
335     ServiceMetadata<::cpp2::DbMixedStackArgumentsSvIf>::gen_getDataByKey1,
336   };
337   for (auto& function_gen : functions) {
338     function_gen(metadata, module_DbMixedStackArguments);
339   }
340   // We need to keep the index around because a reference or iterator could be invalidated.
341   auto selfIndex = services.size();
342   services.emplace_back();
343   ThriftServiceContextRef& context = services[selfIndex];
344   metadata.services_ref()->emplace("module.DbMixedStackArguments", std::move(module_DbMixedStackArguments));
345   context.service_name_ref() = "module.DbMixedStackArguments";
346   ::apache::thrift::metadata::ThriftModuleContext module;
347   module.name_ref() = "module";
348   context.module_ref() = std::move(module);
349   return &context;
350 }
351 } // namespace md
352 } // namespace detail
353 } // namespace thrift
354 } // namespace apache
355