def _generate_route_m(self, route, namespace, route_args, extra_args,<EOL>task_type_name, func_suffix):
user_args = list(route_args)<EOL>transport_args = [<EOL>('<STR_LIT>', '<STR_LIT>'),<EOL>('<STR_LIT>', '<STR_LIT>' if not is_void_type(route.arg_data_type) else '<STR_LIT>'),<EOL>]<EOL>for name, value, typ in extra_args:<EOL><INDENT>user_args.append((name, typ))<EOL>transport_args.append((name, value))<EOL><DEDENT>with self.block_func(<EOL>func='<STR_LIT>'.format(fmt_route_func(route), func_suffix),<EOL>args=fmt_func_args_declaration(user_args),<EOL>return_type='<STR_LIT>'.format(task_type_name)):<EOL><INDENT>self.emit('<STR_LIT>'.format(<EOL>fmt_route_obj_class(namespace.name),<EOL>fmt_route_var(namespace.name, route)))<EOL>if is_union_type(route.arg_data_type):<EOL><INDENT>self.emit('<STR_LIT>'.format(<EOL>fmt_class_prefix(route.arg_data_type),<EOL>fmt_var(route.arg_data_type.name)))<EOL><DEDENT>elif not is_void_type(route.arg_data_type):<EOL><INDENT>init_call = fmt_func_call(<EOL>caller=fmt_alloc_call(<EOL>caller=fmt_class_prefix(route.arg_data_type)),<EOL>callee=self._cstor_name_from_fields_names(route_args),<EOL>args=fmt_func_args([(f[<NUM_LIT:0>], f[<NUM_LIT:0>]) for f in route_args]))<EOL>self.emit('<STR_LIT>'.format(<EOL>fmt_class_prefix(route.arg_data_type), init_call))<EOL><DEDENT>request_call = fmt_func_call(<EOL>caller='<STR_LIT>',<EOL>callee='<STR_LIT>'.format(<EOL>fmt_camel_upper(route.attrs.get('<STR_LIT>'))),<EOL>args=fmt_func_args(transport_args))<EOL>self.emit('<STR_LIT>'.format(request_call))<EOL><DEDENT>self.emit()<EOL>
Generates route method implementation for the given route.