The RPC system allows for several ways to call a remote procedure. The JavaScript implementation is presently more limited.
### C++
*`call` : A normal call that takes arguments and blocks until a return value is received. The call will terminate with a timeout if it takes too long and that throws an exception.
*`call`[[cpp]](https://gitlab.utu.fi/nicolas.pope/ftl/blob/master/components/net/cpp/include/ftl/net/universe.hpp#L139): A normal call that takes arguments and blocks until a return value is received. The call will terminate with a timeout if it takes too long and that throws an exception.
*`asyncCall` : Do a call but use a callback to get the result. It should also but doesn't support futures.
*`send` : A call that does not expect or wait for a return value.
*`findOne` : Broadcasts a call to all known machines and returns the first valid result received.
*`findAll` : Broadcasts a call to all known machines and combines all results into a single vector.
*`broadcast` : Same as `send`, only it goes to every connected machine.
*`send`[[cpp]](https://gitlab.utu.fi/nicolas.pope/ftl/blob/master/components/net/cpp/include/ftl/net/universe.hpp#L142): A call that does not expect or wait for a return value.
*`findOne`[[cpp]](https://gitlab.utu.fi/nicolas.pope/ftl/blob/master/components/net/cpp/include/ftl/net/universe.hpp#L148): Broadcasts a call to all known machines and returns the first valid result received.
*`findAll`[[cpp]](https://gitlab.utu.fi/nicolas.pope/ftl/blob/master/components/net/cpp/include/ftl/net/universe.hpp#L150): Broadcasts a call to all known machines and combines all results into a single vector.
*`broadcast`[[cpp]](https://gitlab.utu.fi/nicolas.pope/ftl/blob/master/components/net/cpp/include/ftl/net/universe.hpp#L136): Same as `send`, only it goes to every connected machine.