Я создал новую реализацию только C ++ 17 Header-> JSON-RPC-CXX.
Владелец
Эта структура обеспечивает трансплат-платформную JSON-RPC (удаленный вызов процедуры) для C ++. Это полностью совместимо с JSON-RPC 2.0 и 1.0.

5 веских причин для использования Libjson-RPC-CPP в вашем следующем проекте RPC
Другие веские причины для использования libjson-rpc-cpp
make test .
Debian (Stretch) и Ubuntu (15.10 или позже)
sudo apt-get install libjsonrpccpp-dev libjsonrpccpp-toolsФедора
sudo dnf install libjson-rpc-cpp-devel libjson-rpc-cpp-toolsArch Linux
Для Arch Linux есть Pkgbuild, предоставленная в AUR.
sudo aura -A libjson-rpc-cppGentoo Linux
sudo emerge dev-cpp/libjson-rpc-cppMac OS X.
Для OS X доступен пакет варева:
brew install libjson-rpc-cppОкна
Здесь есть готовый скомпилированный пакет. Просто загрузите Execute the Installer Exe.
Unix
Для систем на основе Debian и Arch GNU/Linux все зависимости доступны через диспетчер пакетов. Для OS X все зависимости доступны в Brew
git clone https://github.com/cinemast/libjson-rpc-cpp.git
mkdir -p libjson-rpc-cpp/build
cd libjson-rpc-cpp/build
cmake .. && make
sudo make install
sudo ldconfig # only required for linuxВот и все!
Если вы не довольны этим, просто удалите его из вашей системы, используя (внутри каталога строить):
sudo make uninstallВарианты сборки:
Конфигурация по умолчанию должна быть хорошей для большинства систем, но здесь есть доступные флаги компиляции:
-DCOMPILE_TESTS=NO Disables Unit Test Suite.-DCOMPILE_STUBGEN=NO отключить построение StubGenerator.-DCOMPILE_EXAMPLES=NO отключить примеры.-DHTTP_SERVER=NO отключить сайт libmicrohttpd.-DHTTP_CLIENT=NO отключения клиента Curl.-DREDIS_SERVER=NO отключения разъема сервера Redis.-DREDIS_CLIENT=NO отключить клиент -разъем Redis.-DUNIX_DOMAIN_SOCKET_SERVER=YES включить разъем сервера домена домена Unix.-DUNIX_DOMAIN_SOCKET_CLIENT=YES включить разъем клиента Unix Domain Socket.-DFILE_DESCRIPTOR_SERVER=NO отключения разъема сервера дескриптора файлов.-DFILE_DESCRIPTOR_CLIENT=NO отключить разъем клиента дескриптора файла.-DTCP_SOCKET_SERVER=NO отключения разъема сервера сокета TCP.-DTCP_SOCKET_CLIENT=NO отключите разъем клиента TCP Socket. В этом примере будет показан самый простой способ создания сервера RPC и клиента. Если вам нужен только сервер, игнорируйте шаг 4. Если вам нужен только клиент, игнорируйте шаг 3. Вы можете найти все ресурсы этого образца в каталоге src/examples этого хранилища.
[
{
"name" : " sayHello " ,
"params" : {
"name" : " Peter "
},
"returns" : " Hello Peter "
},
{
"name" : " notifyServer "
}
]Тип возвращаемого значения или параметра определяется буквальным ему. Сгенерированные заглушки будут использовать тип «Возврат» для проверки ответа. В этом примере вы можете увидеть, как указать методы и уведомления.
Позвоните JSONRPCSTUB:
jsonrpcstub spec.json --cpp-server=AbstractStubServer --cpp-client=StubClient
mkdir -p gen
mv abstractstubserver.h gen
mv stubclient.h gen Это генерирует AbstractStubServer и StubClient класс и перемещает их в папку gen
Расширьте заглушку абстрактного сервера и реализуйте все чистые виртуальные (абстрактные) методы, определенные в spec.json .
См. SRC/Примеры/StubServer.cpp
В основной функции конкретный сервер создается и запускается. Это все для сервера. Любой клиент, соответствующий JSON-RPC 2.0, теперь может подключиться к вашему серверу.
Скомпилируйте сервер с:
g++ stubserver.cpp -ljsoncpp -lmicrohttpd -ljsonrpccpp-common -ljsonrpccpp-server -o sampleserverСм. SRC/Примеры/StubClient.cpp
Скомпилируйте клиента с:
g++ stubclient.cpp -ljsoncpp -lcurl -ljsonrpccpp-common -ljsonrpccpp-client -o sampleclientПожалуйста, посмотрите на Anploing.md
Вы также можете пожертвовать через
Чанженолы можно найти здесь.
Мы делаем все возможное, чтобы сохранить стабильный API/ABI, чтобы предотвратить проблемы при обновлении этой структуры. Отчет о совместимости можно найти здесь.
Эта структура лицензирована под MIT. Все эти зависимости библиотеки лицензируются по лицензии на MIT, совместимые с MIT.
Если вы используете эту библиотеку и найдете ее полезной, я был бы очень рад, если вы сообщите мне об этом.