/** * Send command without parameters * * @param name of the command * @return deferred result */ public CommandResult send(String name) { return send(name, null, null); }
/** * Send Farcall command to the remote with only array parameters. To read remote answer, use returned {@link * DeferredResult} instance. * * @param name command name * @param params array parameters * @return deferred result */ public CommandResult sendParams(String name, Object... params) { return send(name, Ut.arrayToList(params), null); }
/** * Send remote command with only keyed parameters. The arguments shoul be sequence of key, value pairs, where keys * must be String. For example: * <code><pre> * farcall.sendKeyParams("foo", "param1", 10, "param2", 20, "bar", "baz") * </pre></code> * The return value being passed via {@link DeferredResult} is either data returned by the remote party, e.g. {@link * java.util.List}, {@link Map}, simple types, strings, or whatever else {@link Connector} allows, or, in the case * the remote throws and error, instance of the {@link RemoteException} class. * * @param name * @param keysAndValues key1, value1, key2, value2... sequence * @return deferred result */ public CommandResult sendKeyParams(String name, Object... keysAndValues) { return send(name, null, Ut.mapFromArray(keysAndValues)); }
a.send("ping").success((Object data) -> lastObject = data).join(); assertEquals("pong", lastObject); a.send("bad", null, null).failure((Object data) -> lastObject = data).join(); assertTrue(lastObject instanceof Farcall.RemoteException); a.send("echoargs", array, map).success((Object data) -> { lastObject = data; }).failure((err) -> {
}); fb.start(); Future<Object> f1 = pool.submit(() -> fb.send("fast").waitSuccess()); Future<Object> f2 = pool.submit(() -> fb.send("fast").waitSuccess()); Future<Object> f3 = pool.submit(() -> fb.send("fast").waitSuccess()); Future<Object> f4 = pool.submit(() -> fb.send("slow").waitSuccess()); Future<Object> f5 = pool.submit(() -> fb.send("slow").waitSuccess()); assertEquals("fast done", f1.get()); assertEquals("fast done", f2.get());