Summary:
- reply_type for async void functions is now async_void instead of
the empty struct definition
- async void functions should return "ok". otherwise the processor
will crash and the connection will be killed. Is this behaviour
expected?
Test Plan: tested using testAsync() in ThriftTest. Didn't used to work
but works now
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666415
13f79535-47bb-0310-9956-
ffa450edef68
if (!tfunction->get_returntype()->is_void())
indent(f_service_) << generate_type_term(tfunction->get_returntype(), true) << ";" << endl;
+ else if (tfunction->is_async())
+ indent(f_service_) << "async_void;" << endl;
else
indent(f_service_) << "{struct, []}" << ";" << endl;
indent_down();
indent_up();
indent(f_service_) << generate_type_term(xs, true) << ";" << endl;
indent_down();
-
- // function_info(Function, is_async):
- indent(f_service_) <<
- "function_info(" << name_atom << ", is_async) -> ";
-
- f_service_ << ((tfunction->is_async()) ? "true" : "false");
- f_service_ << ";" << endl;
}
ok = send_reply(OProto, Function, ?tMessageType_REPLY, Reply);
ok when ReplyType == {struct, []} ->
- ok = send_reply(OProto, Function, ?tMessageType_REPLY, {ReplyType, {StructName}})
+ ok = send_reply(OProto, Function, ?tMessageType_REPLY, {ReplyType, {StructName}});
+
+ ok when ReplyType == async_void ->
+ % no reply for async void
+ ok
end,
ok.
#xtruct{string_thing = "This is an Xception2"}});
_ ->
{reply, #xtruct{string_thing = Arg1}}
- end.
+ end;
+
+handle_function(testAsync, {Seconds}) ->
+ timer:sleep(1000 * Seconds),
+ ok.