aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/utils
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/utils')
-rw-r--r--host/lib/utils/rpc.hpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/host/lib/utils/rpc.hpp b/host/lib/utils/rpc.hpp
index bae8f7fe1..17e5fe099 100644
--- a/host/lib/utils/rpc.hpp
+++ b/host/lib/utils/rpc.hpp
@@ -43,7 +43,12 @@ class rpc_client
*/
rpc_client(std::string const& addr, uint16_t port) : _client(addr, port) {}
- /*! Perform an RPC call
+ /*! Perform an RPC call.
+ *
+ * Thread safe (locked).
+ *
+ * \param func_name The function name that is called via RPC
+ * \param args All these arguments are passed to the RPC call
*/
template <typename return_type, typename... Args>
return_type call(std::string const& func_name, Args&&... args)
@@ -53,7 +58,26 @@ class rpc_client
.template as<return_type>();
};
+ /*! Perform an RPC call; also includes a token.
+ *
+ * The first argument to the actual RPC function call is the current token
+ * value. To set a token value, call set_token()
+ */
+ template <typename return_type, typename... Args>
+ return_type call_with_token(std::string const& func_name, Args&&... args)
+ {
+ return call<return_type>(func_name, _token, std::forward<Args>(args)...);
+ };
+
+ /*! Sets the token value. This is used by call_with_token().
+ */
+ void set_token(const std::string &token)
+ {
+ _token = token;
+ }
+
private:
+ std::string _token;
std::mutex _mutex;
::rpc::client _client;
};