- Notifications
You must be signed in to change notification settings - Fork390
rpclib is a modern C++ msgpack-RPC server and client library
License
rpclib/rpclib
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
rpclib is looking for maintainers
If you're looking for a similar library with support for JSON-RPC and async operations, check outpackio.
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 languageimplementing 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++
#include<iostream>#include"rpc/server.h"voidfoo() { std::cout <<"foo was called!" << std::endl;}intmain(int argc,char *argv[]) {// Creating a server that listens on port 8080 rpc::serversrv(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();return0;}
Whensrv.run()
is called,rpclib
starts the server loop which listens to incoming connectionsand tries to dispatch calls to the bound functions. The functions are called from the thread whererun
was called from. There is alsoasync_run
that spawns worker threads and returnsimmediately.
#include<iostream>#include"rpc/client.h"intmain() {// Creating a client that connects to the localhost on port 8080 rpc::clientclient("127.0.0.1",8080);// Calling a function with paramters and converting the result to intauto result = client.call("add",2,3).as<int>(); std::cout <<"The result is:" << result << std::endl;return0;}
All planned 1.0.0 features are done and tested; the current state is production-ready.
This list is updated as I learn about more people using the library; let meknow if you don't want your project listed here.
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.
About
rpclib is a modern C++ msgpack-RPC server and client library
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.