THRIFT-5442 Separate client service calls into send/recv methods and make them public

Client: netstd
Patch: Jens Geyer
This commit is contained in:
Jens Geyer 2021-07-23 22:55:31 +02:00 committed by Jens Geyer
parent fb1d50dfc5
commit 47bf0e46e7
2 changed files with 91 additions and 63 deletions

View File

@ -318,8 +318,8 @@ void t_netstd_generator::init_keywords()
} }
void t_netstd_generator::reset_indent() { void t_netstd_generator::reset_indent() {
while( indent_count() > 0) { while( indent_count() > 0) {
indent_down(); indent_down();
} }
} }
@ -578,7 +578,7 @@ bool t_netstd_generator::print_const_value(ostream& out, string name, t_type* ty
{ {
out << indent(); out << indent();
bool need_static_construction = !in_static; bool need_static_construction = !in_static;
type = resolve_typedef( type); type = resolve_typedef( type);
if (!defval || needtype) if (!defval || needtype)
@ -633,7 +633,7 @@ string t_netstd_generator::render_const_value(ostream& out, string name, t_type*
render << "System.Text.Encoding.UTF8.GetBytes(\"" << get_escaped_string(value) << "\")"; render << "System.Text.Encoding.UTF8.GetBytes(\"" << get_escaped_string(value) << "\")";
} else { } else {
render << '"' << get_escaped_string(value) << '"'; render << '"' << get_escaped_string(value) << '"';
} }
break; break;
case t_base_type::TYPE_BOOL: case t_base_type::TYPE_BOOL:
render << ((value->get_integer() > 0) ? "true" : "false"); render << ((value->get_integer() > 0) ? "true" : "false");
@ -681,43 +681,43 @@ void t_netstd_generator::collect_extensions_types(t_struct* tstruct)
for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) for (m_iter = members.begin(); m_iter != members.end(); ++m_iter)
{ {
collect_extensions_types((*m_iter)->get_type()); collect_extensions_types((*m_iter)->get_type());
} }
} }
void t_netstd_generator::collect_extensions_types(t_type* ttype) void t_netstd_generator::collect_extensions_types(t_type* ttype)
{ {
ttype = resolve_typedef( ttype); ttype = resolve_typedef( ttype);
string key = type_name(ttype); string key = type_name(ttype);
if (ttype->is_struct() || ttype->is_xception()) if (ttype->is_struct() || ttype->is_xception())
{ {
if( checked_extension_types.find(key) == checked_extension_types.end()) if( checked_extension_types.find(key) == checked_extension_types.end())
{ {
checked_extension_types[key] = ttype; // prevent recursion checked_extension_types[key] = ttype; // prevent recursion
t_struct* tstruct = static_cast<t_struct*>(ttype); t_struct* tstruct = static_cast<t_struct*>(ttype);
collect_extensions_types(tstruct); collect_extensions_types(tstruct);
} }
return; return;
} }
if (ttype->is_map() || ttype->is_set() || ttype->is_list()) if (ttype->is_map() || ttype->is_set() || ttype->is_list())
{ {
if( collected_extension_types.find(key) == collected_extension_types.end()) if( collected_extension_types.find(key) == collected_extension_types.end())
{ {
collected_extension_types[key] = ttype; // prevent recursion collected_extension_types[key] = ttype; // prevent recursion
if( ttype->is_map()) if( ttype->is_map())
{ {
t_map* tmap = static_cast<t_map*>(ttype); t_map* tmap = static_cast<t_map*>(ttype);
collect_extensions_types(tmap->get_key_type()); collect_extensions_types(tmap->get_key_type());
collect_extensions_types(tmap->get_val_type()); collect_extensions_types(tmap->get_val_type());
} }
else if (ttype->is_set()) else if (ttype->is_set())
{ {
t_set* tset = static_cast<t_set*>(ttype); t_set* tset = static_cast<t_set*>(ttype);
collect_extensions_types(tset->get_elem_type()); collect_extensions_types(tset->get_elem_type());
} }
else if (ttype->is_list()) else if (ttype->is_list())
{ {
t_list* tlist = static_cast<t_list*>(ttype); t_list* tlist = static_cast<t_list*>(ttype);
@ -772,7 +772,7 @@ void t_netstd_generator::generate_extensions(ostream& out, map<string, t_type*>
out << indent() << "return TCollections.Equals(instance, other);" << endl; out << indent() << "return TCollections.Equals(instance, other);" << endl;
scope_down(out); scope_down(out);
out << endl << endl; out << endl << endl;
out << indent() << "public static int GetHashCode(this " << iter->first << " instance)" << endl; out << indent() << "public static int GetHashCode(this " << iter->first << " instance)" << endl;
scope_up(out); scope_up(out);
out << indent() << "return TCollections.GetHashCode(instance);" << endl; out << indent() << "return TCollections.GetHashCode(instance);" << endl;
@ -796,7 +796,7 @@ void t_netstd_generator::generate_extensions(ostream& out, map<string, t_type*>
string copy_val = get_deep_copy_method_call(tmap->get_val_type(), needs_typecast); string copy_val = get_deep_copy_method_call(tmap->get_val_type(), needs_typecast);
bool null_key = type_can_be_null(tmap->get_key_type()); bool null_key = type_can_be_null(tmap->get_key_type());
bool null_val = type_can_be_null(tmap->get_val_type()); bool null_val = type_can_be_null(tmap->get_val_type());
out << indent() << "foreach (var pair in source)" << endl; out << indent() << "foreach (var pair in source)" << endl;
indent_up(); indent_up();
out << indent() << tmp_instance << ".Add("; out << indent() << tmp_instance << ".Add(";
@ -815,7 +815,7 @@ void t_netstd_generator::generate_extensions(ostream& out, map<string, t_type*>
} }
out << ");" << endl; out << ");" << endl;
indent_down(); indent_down();
} else if( iter->second->is_set() || iter->second->is_list()) { } else if( iter->second->is_set() || iter->second->is_list()) {
string copy_elm; string copy_elm;
bool null_elm = false; bool null_elm = false;
@ -859,7 +859,7 @@ void t_netstd_generator::generate_extensions(ostream& out, map<string, t_type*>
void t_netstd_generator::generate_struct(t_struct* tstruct) void t_netstd_generator::generate_struct(t_struct* tstruct)
{ {
collect_extensions_types(tstruct); collect_extensions_types(tstruct);
if (is_union_enabled() && tstruct->is_union()) if (is_union_enabled() && tstruct->is_union())
{ {
generate_netstd_union(tstruct); generate_netstd_union(tstruct);
@ -904,7 +904,7 @@ void t_netstd_generator::generate_netstd_struct_definition(ostream& out, t_struc
out << endl; out << endl;
generate_netstd_doc(out, tstruct); generate_netstd_doc(out, tstruct);
collect_extensions_types(tstruct); collect_extensions_types(tstruct);
prepare_member_name_mapping(tstruct); prepare_member_name_mapping(tstruct);
if ((is_serialize_enabled() || is_wcf_enabled()) && !is_exception) if ((is_serialize_enabled() || is_wcf_enabled()) && !is_exception)
@ -1153,7 +1153,7 @@ void t_netstd_generator::generate_netstd_deepcopy_method(ostream& out, t_struct*
if( suppress_deepcopy) { if( suppress_deepcopy) {
return; // feature disabled return; // feature disabled
} }
const vector<t_field*>& members = tstruct->get_members(); const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter; vector<t_field*>::const_iterator m_iter;
@ -1169,7 +1169,7 @@ void t_netstd_generator::generate_netstd_deepcopy_method(ostream& out, t_struct*
bool needs_typecast = false; bool needs_typecast = false;
t_type* ttype = (*m_iter)->get_type(); t_type* ttype = (*m_iter)->get_type();
string copy_op = get_deep_copy_method_call(ttype, needs_typecast); string copy_op = get_deep_copy_method_call(ttype, needs_typecast);
bool is_required = field_is_required(*m_iter); bool is_required = field_is_required(*m_iter);
generate_null_check_begin( out, *m_iter); generate_null_check_begin( out, *m_iter);
@ -1187,7 +1187,7 @@ void t_netstd_generator::generate_netstd_deepcopy_method(ostream& out, t_struct*
} }
out << indent() << "return " << tmp_instance << ";" << endl; out << indent() << "return " << tmp_instance << ";" << endl;
indent_down(); indent_down();
out << indent() << "}" << endl << endl; out << indent() << "}" << endl << endl;
} }
@ -1300,34 +1300,34 @@ void t_netstd_generator::generate_netstd_struct_reader(ostream& out, t_struct* t
void t_netstd_generator::generate_null_check_begin(ostream& out, t_field* tfield) { void t_netstd_generator::generate_null_check_begin(ostream& out, t_field* tfield) {
bool is_required = field_is_required(tfield); bool is_required = field_is_required(tfield);
bool null_allowed = type_can_be_null(tfield->get_type()); bool null_allowed = type_can_be_null(tfield->get_type());
if( null_allowed || (!is_required)) { if( null_allowed || (!is_required)) {
bool first = true; bool first = true;
out << indent() << "if("; out << indent() << "if(";
if( null_allowed) { if( null_allowed) {
out << "(" << prop_name(tfield) << " != null)"; out << "(" << prop_name(tfield) << " != null)";
first = false; first = false;
} }
if( !is_required) { if( !is_required) {
if( !first) { if( !first) {
out << " && "; out << " && ";
} }
out << "__isset." << get_isset_name(normalize_name(tfield->get_name())); out << "__isset." << get_isset_name(normalize_name(tfield->get_name()));
} }
out << ")" << endl out << ")" << endl
<< indent() << "{" << endl; << indent() << "{" << endl;
indent_up(); indent_up();
} }
} }
void t_netstd_generator::generate_null_check_end(ostream& out, t_field* tfield) { void t_netstd_generator::generate_null_check_end(ostream& out, t_field* tfield) {
bool is_required = field_is_required(tfield); bool is_required = field_is_required(tfield);
bool null_allowed = type_can_be_null(tfield->get_type()); bool null_allowed = type_can_be_null(tfield->get_type());
if( null_allowed || (!is_required)) { if( null_allowed || (!is_required)) {
indent_down(); indent_down();
out << indent() << "}" << endl; out << indent() << "}" << endl;
@ -1473,7 +1473,7 @@ void t_netstd_generator::generate_netstd_struct_tostring(ostream& out, t_struct*
string tmpvar = tmp("tmp"); string tmpvar = tmp("tmp");
out << indent() << "public override string ToString()" << endl out << indent() << "public override string ToString()" << endl
<< indent() << "{" << endl; << indent() << "{" << endl;
indent_up(); indent_up();
out << indent() << "var " << tmpvar << " = new StringBuilder(\"" << tstruct->get_name() << "(\");" << endl; out << indent() << "var " << tmpvar << " = new StringBuilder(\"" << tstruct->get_name() << "(\");" << endl;
const vector<t_field*>& fields = tstruct->get_members(); const vector<t_field*>& fields = tstruct->get_members();
@ -1580,7 +1580,7 @@ void t_netstd_generator::generate_netstd_union_definition(ostream& out, t_struct
indent_up(); indent_up();
out << indent() << "return Equals(As_" << (*f_iter)->get_name() << ", other.As_" << (*f_iter)->get_name() << ");" << endl; out << indent() << "return Equals(As_" << (*f_iter)->get_name() << ", other.As_" << (*f_iter)->get_name() << ");" << endl;
indent_down(); indent_down();
} }
out << indent() << "default:" << endl; out << indent() << "default:" << endl;
indent_up(); indent_up();
out << indent() << "return true;" << endl; out << indent() << "return true;" << endl;
@ -1595,7 +1595,7 @@ void t_netstd_generator::generate_netstd_union_definition(ostream& out, t_struct
indent_up(); indent_up();
out << indent() << "switch (Isset)" << endl; out << indent() << "switch (Isset)" << endl;
out << indent() << "{" << endl; out << indent() << "{" << endl;
indent_up(); indent_up();
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter)
{ {
bool needs_typecast = false; bool needs_typecast = false;
@ -1604,7 +1604,7 @@ void t_netstd_generator::generate_netstd_union_definition(ostream& out, t_struct
indent_up(); indent_up();
out << indent() << "return As_" << (*f_iter)->get_name() << ".GetHashCode();" << endl; out << indent() << "return As_" << (*f_iter)->get_name() << ".GetHashCode();" << endl;
indent_down(); indent_down();
} }
out << indent() << "default:" << endl; out << indent() << "default:" << endl;
indent_up(); indent_up();
out << indent() << "return (new ___undefined()).GetHashCode();" << endl; out << indent() << "return (new ___undefined()).GetHashCode();" << endl;
@ -1620,7 +1620,7 @@ void t_netstd_generator::generate_netstd_union_definition(ostream& out, t_struct
indent_up(); indent_up();
out << indent() << "switch (Isset)" << endl; out << indent() << "switch (Isset)" << endl;
out << indent() << "{" << endl; out << indent() << "{" << endl;
indent_up(); indent_up();
for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter)
{ {
bool needs_typecast = false; bool needs_typecast = false;
@ -1629,7 +1629,7 @@ void t_netstd_generator::generate_netstd_union_definition(ostream& out, t_struct
indent_up(); indent_up();
out << indent() << "return new " << (*f_iter)->get_name() << "(As_" << (*f_iter)->get_name() << copy_op << ");" << endl; out << indent() << "return new " << (*f_iter)->get_name() << "(As_" << (*f_iter)->get_name() << copy_op << ");" << endl;
indent_down(); indent_down();
} }
out << indent() << "default:" << endl; out << indent() << "default:" << endl;
indent_up(); indent_up();
out << indent() << "return new ___undefined();" << endl; out << indent() << "return new ___undefined();" << endl;
@ -1646,7 +1646,7 @@ void t_netstd_generator::generate_netstd_union_definition(ostream& out, t_struct
out << indent() << "public override object Data { get { return null; } }" << endl out << indent() << "public override object Data { get { return null; } }" << endl
<< indent() << "public ___undefined() : base(0) {}" << endl << endl; << indent() << "public ___undefined() : base(0) {}" << endl << endl;
if( ! suppress_deepcopy) { if( ! suppress_deepcopy) {
out << indent() << "public new ___undefined DeepCopy()" << endl; out << indent() << "public new ___undefined DeepCopy()" << endl;
out << indent() << "{" << endl; out << indent() << "{" << endl;
@ -1659,7 +1659,7 @@ void t_netstd_generator::generate_netstd_union_definition(ostream& out, t_struct
t_struct undefined_struct(program_,"___undefined"); t_struct undefined_struct(program_,"___undefined");
generate_netstd_struct_equals(out, &undefined_struct); generate_netstd_struct_equals(out, &undefined_struct);
generate_netstd_struct_hashcode(out, &undefined_struct); generate_netstd_struct_hashcode(out, &undefined_struct);
out << indent() << "public override global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)" << endl out << indent() << "public override global::System.Threading.Tasks.Task WriteAsync(TProtocol oprot, CancellationToken cancellationToken)" << endl
<< indent() << "{" << endl; << indent() << "{" << endl;
indent_up(); indent_up();
@ -1696,8 +1696,8 @@ void t_netstd_generator::generate_netstd_union_class(ostream& out, t_struct* tun
indent_down(); indent_down();
out << indent() << "}" << endl out << indent() << "}" << endl
<< endl; << endl;
out << indent() << "public class " << tfield->get_name() << " : " << tunion->get_name() << endl; out << indent() << "public class " << tfield->get_name() << " : " << tunion->get_name() << endl;
out << indent() << "{" << endl; out << indent() << "{" << endl;
indent_up(); indent_up();
@ -2014,9 +2014,10 @@ void t_netstd_generator::generate_service_client(ostream& out, t_service* tservi
<< indent() << "{" << endl << indent() << "{" << endl
<< indent() << "}" << endl << indent() << "}" << endl
<< endl << endl
<< indent() << "public Client(TProtocol inputProtocol, TProtocol outputProtocol) : base(inputProtocol, outputProtocol)" << indent() << "public Client(TProtocol inputProtocol, TProtocol outputProtocol) : base(inputProtocol, outputProtocol)" << endl
<< indent() << "{" << endl << indent() << "{" << endl
<< indent() << "}" << endl; << indent() << "}" << endl
<< endl;
vector<t_function*> functions = tservice->get_functions(); vector<t_function*> functions = tservice->get_functions();
vector<t_function*>::const_iterator functions_iterator; vector<t_function*>::const_iterator functions_iterator;
@ -2030,12 +2031,29 @@ void t_netstd_generator::generate_service_client(ostream& out, t_service* tservi
out << indent() << "public async " << function_signature_async(*functions_iterator, "") << endl out << indent() << "public async " << function_signature_async(*functions_iterator, "") << endl
<< indent() << "{" << endl; << indent() << "{" << endl;
indent_up(); indent_up();
out << indent() << "await send_" << function_name << "(";
string call_args = argument_list((*functions_iterator)->get_arglist(),false);
if(! call_args.empty()) {
out << call_args << ", ";
}
out << "cancellationToken);" << endl;
if(! (*functions_iterator)->is_oneway()) {
out << indent() << ((*functions_iterator)->get_returntype()->is_void() ? "" : "return ")
<< "await recv_" << function_name << "(cancellationToken);" << endl;
}
indent_down();
out << indent() << "}" << endl << endl;
// async send
out << indent() << "public async " << function_signature_async(*functions_iterator, "send_", MODE_NO_RETURN) << endl
<< indent() << "{" << endl;
indent_up();
string tmpvar = tmp("tmp"); string tmpvar = tmp("tmp");
string argsname = (*functions_iterator)->get_name() + "Args"; string argsname = (*functions_iterator)->get_name() + "Args";
out << indent() << "await OutputProtocol.WriteMessageBeginAsync(new TMessage(\"" << raw_func_name out << indent() << "await OutputProtocol.WriteMessageBeginAsync(new TMessage(\"" << raw_func_name
<< "\", TMessageType." << ((*functions_iterator)->is_oneway() ? "Oneway" : "Call") << "\", TMessageType." << ((*functions_iterator)->is_oneway() ? "Oneway" : "Call")
<< ", SeqId), cancellationToken);" << endl << ", SeqId), cancellationToken);" << endl
<< indent() << endl << indent() << endl
<< indent() << "var " << tmpvar << " = new InternalStructs." << argsname << "() {" << endl; << indent() << "var " << tmpvar << " = new InternalStructs." << argsname << "() {" << endl;
@ -2061,8 +2079,16 @@ void t_netstd_generator::generate_service_client(ostream& out, t_service* tservi
<< indent() << "await OutputProtocol.WriteMessageEndAsync(cancellationToken);" << endl << indent() << "await OutputProtocol.WriteMessageEndAsync(cancellationToken);" << endl
<< indent() << "await OutputProtocol.Transport.FlushAsync(cancellationToken);" << endl; << indent() << "await OutputProtocol.Transport.FlushAsync(cancellationToken);" << endl;
indent_down();
out << indent() << "}" << endl << endl;
if (!(*functions_iterator)->is_oneway()) if (!(*functions_iterator)->is_oneway())
{ {
// async recv
out << indent() << "public async " << function_signature_async(*functions_iterator, "recv_", MODE_NO_ARGS) << endl
<< indent() << "{" << endl;
indent_up();
string resultname = (*functions_iterator)->get_name() + "Result"; string resultname = (*functions_iterator)->get_name() + "Result";
t_struct noargs(program_); t_struct noargs(program_);
t_struct* xs = (*functions_iterator)->get_xceptions(); t_struct* xs = (*functions_iterator)->get_xceptions();
@ -2111,11 +2137,7 @@ void t_netstd_generator::generate_service_client(ostream& out, t_service* tservi
out << indent() << "}" << endl; out << indent() << "}" << endl;
} }
if ((*functions_iterator)->get_returntype()->is_void()) if (!(*functions_iterator)->get_returntype()->is_void())
{
out << indent() << "return;" << endl;
}
else
{ {
out << indent() << "throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, \"" out << indent() << "throw new TApplicationException(TApplicationException.ExceptionType.MissingResult, \""
<< function_name << " failed: unknown result\");" << endl; << function_name << " failed: unknown result\");" << endl;
@ -2125,11 +2147,6 @@ void t_netstd_generator::generate_service_client(ostream& out, t_service* tservi
indent_down(); indent_down();
out << indent() << "}" << endl << endl; out << indent() << "}" << endl << endl;
} }
else
{
indent_down();
out << indent() << "}" << endl;
}
cleanup_member_name_mapping(arg_struct); cleanup_member_name_mapping(arg_struct);
} }
@ -2335,7 +2352,7 @@ void t_netstd_generator::generate_process_function_async(ostream& out, t_service
bool is_deprecated = (tfunction->annotations_.end() != tfunction->annotations_.find("deprecated")); bool is_deprecated = (tfunction->annotations_.end() != tfunction->annotations_.find("deprecated"));
if( is_deprecated) { if( is_deprecated) {
out << indent() << "#pragma warning disable CS0618,CS0612" << endl; out << indent() << "#pragma warning disable CS0618,CS0612" << endl;
} }
out << indent(); out << indent();
@ -2373,7 +2390,7 @@ void t_netstd_generator::generate_process_function_async(ostream& out, t_service
out << "cancellationToken);" << endl; out << "cancellationToken);" << endl;
if( is_deprecated) { if( is_deprecated) {
out << indent() << "#pragma warning restore CS0618,CS0612" << endl; out << indent() << "#pragma warning restore CS0618,CS0612" << endl;
} }
vector<t_field*>::const_iterator x_iter; vector<t_field*>::const_iterator x_iter;
@ -2415,7 +2432,7 @@ void t_netstd_generator::generate_process_function_async(ostream& out, t_service
<< indent() << "catch (TTransportException)" << endl << indent() << "catch (TTransportException)" << endl
<< indent() << "{" << endl << indent() << "{" << endl
<< indent() << " throw;" << endl << indent() << " throw;" << endl
<< indent() << "}" << endl << indent() << "}" << endl
<< indent() << "catch (Exception " << tmpex << ")" << endl << indent() << "catch (Exception " << tmpex << ")" << endl
<< indent() << "{" << endl; << indent() << "{" << endl;
indent_up(); indent_up();
@ -3001,7 +3018,7 @@ string t_netstd_generator::make_csharp_string_literal( string const& value)
} }
} }
result << "\""; result << "\"";
return result.str(); return result.str();
} }
@ -3319,7 +3336,7 @@ string t_netstd_generator::get_deep_copy_method_call(t_type* ttype, bool& needs_
{ {
return ""; // simple assignment will do return ""; // simple assignment will do
} }
else else
{ {
needs_typecast = (! ttype->is_container()); needs_typecast = (! ttype->is_container());
return "." + DEEP_COPY_METHOD_NAME + "()"; return "." + DEEP_COPY_METHOD_NAME + "()";
@ -3384,28 +3401,30 @@ string t_netstd_generator::function_signature(t_function* tfunction, string pref
return type_name(ttype) + " " + func_name(normalize_name(prefix + tfunction->get_name())) + "(" + argument_list(tfunction->get_arglist()) + ")"; return type_name(ttype) + " " + func_name(normalize_name(prefix + tfunction->get_name())) + "(" + argument_list(tfunction->get_arglist()) + ")";
} }
string t_netstd_generator::function_signature_async(t_function* tfunction, string prefix) string t_netstd_generator::function_signature_async(t_function* tfunction, string prefix, int mode)
{ {
t_type* ttype = tfunction->get_returntype(); t_type* ttype = tfunction->get_returntype();
string task = "global::System.Threading.Tasks.Task"; string task = "global::System.Threading.Tasks.Task";
if (!ttype->is_void()) if ((!ttype->is_void()) && ((mode & MODE_NO_RETURN) == 0))
{ {
task += "<" + type_name(ttype) + ">"; task += "<" + type_name(ttype) + ">";
} }
string result = task + " " + func_name(normalize_name(prefix + tfunction->get_name()) + (add_async_postfix ? "Async" : "")) + "("; string result = task + " " + func_name(normalize_name(prefix + tfunction->get_name()) + (add_async_postfix ? "Async" : "")) + "(";
string args = argument_list(tfunction->get_arglist()); string args = argument_list(tfunction->get_arglist());
result += args; if((mode & MODE_NO_ARGS) == 0) {
if (!args.empty()) result += args;
{ if (!args.empty())
result += ", "; {
result += ", ";
}
} }
result += "CancellationToken cancellationToken = default)"; result += "CancellationToken cancellationToken = default)";
return result; return result;
} }
string t_netstd_generator::argument_list(t_struct* tstruct) string t_netstd_generator::argument_list(t_struct* tstruct, bool with_types)
{ {
string result = ""; string result = "";
const vector<t_field*>& fields = tstruct->get_members(); const vector<t_field*>& fields = tstruct->get_members();
@ -3421,7 +3440,12 @@ string t_netstd_generator::argument_list(t_struct* tstruct)
{ {
result += ", "; result += ", ";
} }
result += type_name((*f_iter)->get_type()) + " " + normalize_name((*f_iter)->get_name());
if( with_types) {
result += type_name((*f_iter)->get_type()) + " ";
}
result += normalize_name((*f_iter)->get_name());
} }
return result; return result;
} }

View File

@ -131,12 +131,16 @@ public:
string netstd_type_usings() const; string netstd_type_usings() const;
string netstd_thrift_usings() const; string netstd_thrift_usings() const;
static const int MODE_FULL_DECL = 0x00;
static const int MODE_NO_RETURN = 0x01;
static const int MODE_NO_ARGS = 0x02;
string type_name(t_type* ttype); string type_name(t_type* ttype);
string base_type_name(t_base_type* tbase); string base_type_name(t_base_type* tbase);
string declare_field(t_field* tfield, bool init = false, string prefix = ""); string declare_field(t_field* tfield, bool init = false, string prefix = "");
string function_signature_async(t_function* tfunction, string prefix = ""); string function_signature_async(t_function* tfunction, string prefix = "", int mode = MODE_FULL_DECL);
string function_signature(t_function* tfunction, string prefix = ""); string function_signature(t_function* tfunction, string prefix = "");
string argument_list(t_struct* tstruct); string argument_list(t_struct* tstruct, bool with_types = true);
string type_to_enum(t_type* ttype); string type_to_enum(t_type* ttype);
string prop_name(t_field* tfield, bool suppress_mapping = false); string prop_name(t_field* tfield, bool suppress_mapping = false);
string func_name(t_function* tfunc, bool suppress_mapping = false); string func_name(t_function* tfunc, bool suppress_mapping = false);