oneway_(oneway)
{
if (oneway_ && !xceptions_->get_members().empty()) {
- throw std::string("Async methods can't throw exceptions.");
+ throw std::string("Oneway methods can't throw exceptions.");
}
}
{error,{bad_args,testVoid,[asdf]}}
121> thrift_client:call(C, testI32, [123]).
{ok,123}
-122> thrift_client:call(C, testAsync, [1]).
+122> thrift_client:call(C, testOneway, [1]).
{ok,ok}
123> catch thrift_client:call(C, testXception, ["foo"]).
{error,{no_function,testXception}}
handle_function_catch(State = #thrift_processor{service = Service},
Function, ErrType, ErrData) ->
- IsAsync = Service:function_info(Function, reply_type) =:= async_void,
+ IsOneway = Service:function_info(Function, reply_type) =:= async_void,
case {ErrType, ErrData} of
- _ when IsAsync ->
+ _ when IsOneway ->
Stack = erlang:get_stacktrace(),
error_logger:warning_msg(
- "async void ~p threw error which must be ignored: ~p",
+ "oneway void ~p threw error which must be ignored: ~p",
[Function, {ErrType, ErrData, Stack}]),
ok;
System.out.print("}\n");
// Test oneway
- System.out.print("testAsync(3)...");
- long startAsync = System.nanoTime();
- testClient.testAsync(3);
- long asyncElapsedMillis = (System.nanoTime() - startAsync) / 1000000;
- if (asyncElapsedMillis > 200) {
- throw new Exception("Async test failed: took " +
- Long.toString(asyncElapsedMillis) +
+ System.out.print("testOneway(3)...");
+ long startOneway = System.nanoTime();
+ testClient.testOneway(3);
+ long onewayElapsedMillis = (System.nanoTime() - startOneway) / 1000000;
+ if (onewayElapsedMillis > 200) {
+ throw new Exception("Oneway test failed: took " +
+ Long.toString(onewayElapsedMillis) +
"ms");
} else {
System.out.println("Success - took " +
- Long.toString(asyncElapsedMillis) +
+ Long.toString(onewayElapsedMillis) +
"ms");
}
return result;
}
- public void testAsync(int sleepFor) {
- System.out.println("testAsync(" + Integer.toString(sleepFor) +
+ public void testOneway(int sleepFor) {
+ System.out.println("testOneway(" + Integer.toString(sleepFor) +
") => sleeping...");
try {
Thread.sleep(sleepFor * 1000);
This function is the only function witch can be called asynchronous.
The ready can switch Connection to three states:
- WAIT_LEN if request was async.
+ WAIT_LEN if request was oneway.
SEND_ANSWER if request was processed in normal way.
CLOSED if request throws unexpected exception.
Xtruct testMultiException(string arg0, string arg1) throws(Xception err1, Xception2 err2)
/* Test oneway void */
- async void testAsync(1:i32 secondsToSleep)
+ async void testOneway(1:i32 secondsToSleep)
}
service SecondService
/* test oneway void */
{
- printf("testClient.testAsync(3) =>");
- uint64_t startAsync = now();
- testClient.testAsync(3);
- uint64_t elapsed = now() - startAsync;
+ printf("testClient.testOneway(3) =>");
+ uint64_t startOneway = now();
+ testClient.testOneway(3);
+ uint64_t elapsed = now() - startOneway;
if (elapsed > 200 * 1000) { // 0.2 seconds
printf(" FAILURE - took %.2f ms\n", (double)elapsed/1000.0);
} else {
}
}
- void testAsync(int sleepFor) {
- printf("testAsync(%d): Sleeping...\n", sleepFor);
+ void testOneway(int sleepFor) {
+ printf("testOneway(%d): Sleeping...\n", sleepFor);
sleep(sleepFor);
- printf("testAsync(%d): done sleeping!\n", sleepFor);
+ printf("testOneway(%d): done sleeping!\n", sleepFor);
}
};
Console.Write(" = Xtruct(byte_thing:" + multiResponse.Byte_thing + ",String_thing:" + multiResponse.String_thing
+ ",i32_thing:" + multiResponse.I32_thing + ",i64_thing:" + multiResponse.I64_thing + ")\n");
- Console.WriteLine("Test Async(1)");
- client.testAsync(1);
+ Console.WriteLine("Test Oneway(1)");
+ client.testOneway(1);
}
}
}
}
}
- public void testAsync(int arg)
+ public void testOneway(int arg)
{
- Console.WriteLine("testAsync(" + arg + "), sleeping...");
+ Console.WriteLine("testOneway(" + arg + "), sleeping...");
System.Threading.Thread.Sleep(arg * 1000);
- Console.WriteLine("testAsync finished");
+ Console.WriteLine("testOneway finished");
}
} // class TestHandler
% We have to make oneway calls into this client only since otherwise it will try
% to read from the disklog and go boom.
- {ok, ok} = thrift_client:call(Client, testAsync, [16#deadbeef]),
+ {ok, ok} = thrift_client:call(Client, testOneway, [16#deadbeef]),
io:format("Call written~n"),
% Use the send_call method to write a non-oneway call into the log
ok = thrift_client:send_call(Client, testString, [<<"hello world">>]),
- io:format("Non-async call sent~n"),
+ io:format("Non-oneway call sent~n"),
ok = thrift_client:close(Client),
io:format("Client closed~n"),
% We have to make oneway calls into this client only since otherwise it will try
% to read from the disklog and go boom.
- {ok, ok} = thrift_client:call(Client, testAsync, [16#deadbeef]),
+ {ok, ok} = thrift_client:call(Client, testOneway, [16#deadbeef]),
io:format("Call written~n"),
% Use the send_call method to write a non-oneway call into the log
ok = thrift_client:send_call(Client, testString, [<<"hello world">>]),
- io:format("Non-async call sent~n"),
+ io:format("Non-oneway call sent~n"),
ok = thrift_client:close(Client),
io:format("Client closed~n"),
{reply, #xtruct{string_thing = Arg1}}
end;
-handle_function(testAsync, {Seconds}) ->
+handle_function(testOneway, {Seconds}) ->
timer:sleep(1000 * Seconds),
ok.
testMulti a a1 a2 a3 a4 a5 a6 = return (Xtruct Nothing Nothing Nothing Nothing)
testException a c = throwDyn (Xception (Just 1) (Just "bya"))
testMultiException a c1 c2 = return (Xtruct Nothing Nothing Nothing Nothing)
- testAsync a (Just i) = do print i
+ testOneway a (Just i) = do print i
main = do (run_basic_server TestHandler process 9090) `catchDyn` (\(TransportExn s t) -> print s)
let res = new xtruct in
res#set_string_thing (sod a1);
res
- method testAsync i =
+ method testOneway i =
Unix.sleep (sod i)
end;;
except Exception: # type is undefined
pass
- def testAsync(self):
+ def testOneway(self):
start = time.time()
- self.client.testAsync(0.5)
+ self.client.testOneway(0.5)
end = time.time()
self.assertTrue(end - start < 0.2,
- "async sleep took %f sec" % (end - start))
+ "oneway sleep took %f sec" % (end - start))
class NormalBinaryTest(AbstractTest):
protocol_factory = TBinaryProtocol.TBinaryProtocolFactory()
elif str == "throw_undeclared":
raise ValueError("foo")
- def testAsync(self, seconds):
- print 'testAsync(%d) => sleeping...' % seconds
+ def testOneway(self, seconds):
+ print 'testOneway(%d) => sleeping...' % seconds
time.sleep(seconds)
print 'done sleeping'