J'ai créé un nouvel en-tête C ++ 17 uniquement uniquement -> JSON-RPC-CXX.
Maître
Ce framework fournit la prise en charge de JSON-RPC (appel de procédure à distance) pour C ++. Il est entièrement compatible JSON-RPC 2.0 et 1.0.

5 bonnes raisons d'utiliser Libjson-RPC-CPP dans votre prochain projet RPC
Autres bonnes raisons d'utiliser Libjson-RPC-CPP
make test .
Debian (Stretch) et Ubuntu (15.10 ou plus tard)
sudo apt-get install libjsonrpccpp-dev libjsonrpccpp-toolsFeutre
sudo dnf install libjson-rpc-cpp-devel libjson-rpc-cpp-toolsArch Linux
Pour Arch Linux, il y a un pkgbuild fourni dans l'AUR.
sudo aura -A libjson-rpc-cppGentoo Linux
sudo emerge dev-cpp/libjson-rpc-cppMac OS X
Pour OS X, un package d'infusion est disponible:
brew install libjson-rpc-cppFenêtre
Il y a un package compilé prêt à l'emploi ici. Téléchargez simplement Exécuter l'installateur EXE.
Unix
Pour les systèmes basés sur Debian et Arch GNU / Linux, toutes les dépendances sont disponibles via le gestionnaire de packages. Pour OS X, toutes les dépendances sont disponibles dans 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 linuxC'est ça!
Si vous n'êtes pas satisfait, le désinstallez simplement à partir de votre système en utilisant (à l'intérieur de la construction du répertoire):
sudo make uninstallOptions de construction:
La configuration par défaut devrait être bien pour la plupart des systèmes, mais voici des indicateurs de compilation disponibles:
-DCOMPILE_TESTS=NO Disactive la suite de test unitaire.-DCOMPILE_STUBGEN=NO désactive la construction du Stubgenerator.-DCOMPILE_EXAMPLES=NO désactive les exemples.-DHTTP_SERVER=NO Désactiver le serveur Web libmicrohttpd.-DHTTP_CLIENT=NO Désactiver le client Curl.-DREDIS_SERVER=NO Désactiver le connecteur Redis Server.-DREDIS_CLIENT=NO de désactiver le connecteur du client redis.-DUNIX_DOMAIN_SOCKET_SERVER=YES activez le connecteur du serveur de socket de domaine UNIX.-DUNIX_DOMAIN_SOCKET_CLIENT=YES activez le connecteur client de socket de domaine UNIX.-DFILE_DESCRIPTOR_SERVER=NO désactiver le connecteur du serveur de descripteur de fichiers.-DFILE_DESCRIPTOR_CLIENT=NO désactiver le connecteur client de descripteur de fichier.-DTCP_SOCKET_SERVER=NO Désactiver le connecteur TCP Socket Server.-DTCP_SOCKET_CLIENT=NO Désactiver le connecteur client TCP Socket. Cet exemple affichera le moyen le plus simple de créer un serveur et un client RPC. Si vous n'avez besoin que du serveur, ignorez l'étape 4. Si vous n'avez besoin que du client, ignorez l'étape 3. Vous pouvez trouver toutes les ressources de cet échantillon dans le répertoire src/examples de ce référentiel.
[
{
"name" : " sayHello " ,
"params" : {
"name" : " Peter "
},
"returns" : " Hello Peter "
},
{
"name" : " notifyServer "
}
]Le type d'une valeur de retour ou d'un paramètre est défini par le littéral qui lui est attribué. Les talons générés utiliseront le type "Retour" pour valider la réponse. Dans cet exemple, vous pouvez voir comment spécifier des méthodes et des notifications.
Appelez JSONRPCStub:
jsonrpcstub spec.json --cpp-server=AbstractStubServer --cpp-client=StubClient
mkdir -p gen
mv abstractstubserver.h gen
mv stubclient.h gen Cela génère un AbstractStubServer et une classe StubClient et les déplace vers le dossier gen .
Étendez le talon du serveur abstrait et implémentez toutes les méthodes virtuelles pures (abstraites) définies dans spec.json .
Voir src / exemples / Stubserver.cpp
Dans la fonction principale, le serveur en béton est instancié et démarré. C'est tout pour le serveur. Tout client conforme JSON-RPC 2.0 peut désormais se connecter à votre serveur.
Compilez le serveur avec:
g++ stubserver.cpp -ljsoncpp -lmicrohttpd -ljsonrpccpp-common -ljsonrpccpp-server -o sampleserverVoir src / exemples / Stubclient.cpp
Compilez le client avec:
g++ stubclient.cpp -ljsoncpp -lcurl -ljsonrpccpp-common -ljsonrpccpp-client -o sampleclientVeuillez jeter un œil à la contribution.md
Vous pouvez également faire un don via
Les changelogs peuvent être trouvés ici.
Nous faisons de notre mieux pour garder l'API / ABI stable, pour éviter les problèmes lors de la mise à jour de ce cadre. Un rapport de compatibilité peut être trouvé ici.
Ce cadre est sous licence dans le MIT. Toutes ces dépendances de bibliothèques sont autorisées sous licence compatible MIT.
Si vous utilisez cette bibliothèque et que vous le trouvez utile, je serais très heureux si vous me le faites savoir.