diff options
Diffstat (limited to 'jrt_test/src/java/SimpleServer.java')
-rw-r--r-- | jrt_test/src/java/SimpleServer.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/jrt_test/src/java/SimpleServer.java b/jrt_test/src/java/SimpleServer.java new file mode 100644 index 00000000000..b2859b65f65 --- /dev/null +++ b/jrt_test/src/java/SimpleServer.java @@ -0,0 +1,50 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +import com.yahoo.jrt.*; + +public class SimpleServer { + + public void rpc_inc(Request req) { + req.returnValues().add(new Int32Value(req.parameters().get(0).asInt32() + + 1)); + } + + public void rpc_echo(Request req) { + for (int i = 0; i < req.parameters().size(); i++) { + req.returnValues().add(req.parameters().get(i)); + } + } + + public void rpc_test(Request req) { + int value = req.parameters().get(0).asInt32(); + int error = req.parameters().get(1).asInt32(); + int extra = req.parameters().get(2).asInt8(); + + req.returnValues().add(new Int32Value(value)); + if (extra != 0) { + req.returnValues().add(new Int32Value(value)); + } + if (error != 0) { + req.setError(error, "Custom error"); + } + } + + public static void main(String[] args) { + if (args.length != 1) { + System.err.println("usage: SimpleServer <spec>"); + System.exit(1); + } + Supervisor orb = new Supervisor(new Transport()); + SimpleServer handler = new SimpleServer(); + orb.addMethod(new Method("inc", "i", "i", handler, "rpc_inc")); + orb.addMethod(new Method("echo", "*", "*", handler, "rpc_echo")); + orb.addMethod(new Method("test", "iib", "i", handler, "rpc_test")); + try { + orb.listen(new Spec(args[0])); + } catch (ListenFailedException e) { + System.err.println("could not listen at " + args[0]); + System.exit(1); + } + orb.transport().join(); + } +} |