Description
rpclib is a RPC library for C++, providing both a client and server implementation. It is built using modern C++14, and as such, requires a recent compiler. Using the library, you can:
- Expose functions of your program to be called via RPC with minimal boilerplate
- Or call function through RPC with a syntax that is as natural as C++ permits (without code generation)
rpclib alternatives and similar libraries
Based on the "Inter-process communication" category.
Alternatively, view rpclib alternatives based on common mentions on social networks and blogs.
-
AREG SDK
AREG is an asynchronous Object RPC framework to simplify multitasking programming by blurring borders between processes and treating remote objects as if they coexist in the same thread.
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of rpclib or a related project?
Popular Comparisons
README
rpclib is looking for maintainers
rpclib
rpclib
is a RPC library for C++, providing both a client and server implementation. It is built using modern C++14, and as such, requires a recent compiler. Main highlights:
- Expose functions of your program to be called via RPC (from any language implementing msgpack-rpc)
- Call functions through RPC (of programs written in any language)
- No IDL to learn
- No code generation step to integrate in your build, just C++
Look&feel
Server
#include <iostream>
#include "rpc/server.h"
void foo() {
std::cout << "foo was called!" << std::endl;
}
int main(int argc, char *argv[]) {
// Creating a server that listens on port 8080
rpc::server srv(8080);
// Binding the name "foo" to free function foo.
// note: the signature is automatically captured
srv.bind("foo", &foo);
// Binding a lambda function to the name "add".
srv.bind("add", [](int a, int b) {
return a + b;
});
// Run the server loop.
srv.run();
return 0;
}
When srv.run()
is called, rpclib
starts the server loop which listens to incoming connections
and tries to dispatch calls to the bound functions. The functions are called from the thread where
run
was called from. There is also async_run
that spawns worker threads and returns
immediately.
Client
#include <iostream>
#include "rpc/client.h"
int main() {
// Creating a client that connects to the localhost on port 8080
rpc::client client("127.0.0.1", 8080);
// Calling a function with paramters and converting the result to int
auto result = client.call("add", 2, 3).as<int>();
std::cout << "The result is: " << result << std::endl;
return 0;
}
Status
All planned 1.0.0 features are done and tested; the current state is production-ready.
Who uses rpclib?
This list is updated as I learn about more people using the library; let me know if you don't want your project listed here.
Thanks
rpclib
builds on the efforts of fantastic C++ projects. In no particular order:
- MessagePack implementation for C and C++ by Takatoshi Kondo (website)
- asio by Christopher Kohlhoff (website)
- cppformat (now renamed
fmtlib
, by Victor Zverovich (website) - googletest by Google
- wheels by Martinho Fernandes
Shoutouts to
- Appveyor
- Travis CI
- Coveralls.io
- Coverity
- ASan & TSan helped spotting and resolving many bugs.
*Note that all licence references and agreements mentioned in the rpclib README section above
are relevant to that project's source code only.