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