rpclib ищет сопровождающих
Если вы ищете аналогичную библиотеку с поддержкой JSON-RPC и асинхронных операций, обратите внимание на packageio .
rpclib
— это библиотека RPC для C++, обеспечивающая как клиентскую, так и серверную реализацию. Он построен с использованием современного C++14 и поэтому требует последней версии компилятора. Основные моменты:
# 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 ;
}
Когда вызывается srv.run()
, rpclib
запускает серверный цикл, который прослушивает входящие соединения и пытается перенаправить вызовы связанным функциям. Функции вызываются из потока, из которого был вызван run
. Существует также async_run
, который порождает рабочие потоки и немедленно возвращает результат.
# 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 ;
}
Все запланированные функции версии 1.0.0 реализованы и протестированы; текущее состояние готово к производству.
Этот список обновляется по мере того, как я узнаю, что библиотекой пользуется все больше людей; дайте мне знать, если вы не хотите, чтобы ваш проект был указан здесь.
rpclib
основан на усилиях фантастических проектов C++. В произвольном порядке:
fmtlib
Виктора Зверовича (веб-сайт)Приветствую