Ich habe einen neuen C ++ 17-Header nur implementiert-> JSON-RPC-CXX.
Master
Dieses Framework bietet Cross-Plattform JSON-RPC (Remote Procedure Call) Unterstützung für C ++. Es ist vollständig JSON-RPC 2.0 & 1.0 kompatibel.

5 gute Gründe für die Verwendung von libjson-RPC-CPP in Ihrem nächsten RPC-Projekt
Weitere gute Gründe für die Verwendung von libjson-rpc-cpp
make test .
Debian (Stretch) und Ubuntu (15.10 oder höher)
sudo apt-get install libjsonrpccpp-dev libjsonrpccpp-toolsFedora
sudo dnf install libjson-rpc-cpp-devel libjson-rpc-cpp-toolsArch Linux
Für Arch Linux befindet sich in der AUR ein PKGBuild.
sudo aura -A libjson-rpc-cppGentoo Linux
sudo emerge dev-cpp/libjson-rpc-cppMac OS X
Für OS X ist ein Brehungspaket erhältlich:
brew install libjson-rpc-cppFenster
Hier gibt es ein kompiliertes kompiliertes Paket. Laden Sie einfach den Installer exe aus.
Unix
Für Debian- und Arch GNU/Linux -basierte Systeme sind alle Abhängigkeiten über den Paketmanager verfügbar. Für OS X sind alle Abhängigkeiten in Brew erhältlich
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 linuxDas war's!
Wenn Sie damit nicht zufrieden sind, deinstallieren Sie es einfach von Ihrem System mithilfe (im Erstellen des Verzeichnisses):
sudo make uninstallOptionen erstellen:
Die Standardkonfiguration sollte für die meisten Systeme in Ordnung sein, aber hier sind verfügbare Kompilierungsflags:
-DCOMPILE_TESTS=NO Disables Unit Test Suite.-DCOMPILE_STUBGEN=NO deaktiviert das Erstellen des Stubgenerators.-DCOMPILE_EXAMPLES=NO deaktiviert Beispiele.-DHTTP_SERVER=NO deaktivieren Sie den libmicrohttpd -Webserver.-DHTTP_CLIENT=NO deaktivieren Sie den Curl -Client.-DREDIS_SERVER=NO Deaktivieren Sie den Redis -Server -Connector.-DREDIS_CLIENT=NO deaktivieren Sie den Redis -Client -Anschluss.-DUNIX_DOMAIN_SOCKET_SERVER=YES Aktivieren Sie den Unix Domain Socket Server Connector.-DUNIX_DOMAIN_SOCKET_CLIENT=YES Aktivieren Sie den Client -Anschluss der UNIX -Domain -Socket.-DFILE_DESCRIPTOR_SERVER=NO Deaktivieren Sie den Dateideskriptor -Server -Connector.-DFILE_DESCRIPTOR_CLIENT=NO deaktivieren Sie den Dateideskriptor -Client -Connector.-DTCP_SOCKET_SERVER=NO deaktivieren Sie den TCP -Socket -Serveranschluss.-DTCP_SOCKET_CLIENT=NO deaktivieren Sie den TCP -Socket -Client -Anschluss. In diesem Beispiel wird die einfachste Möglichkeit angezeigt, einen RPC -Server und Client zu erstellen. Wenn Sie nur den Server benötigen, ignorieren Sie Schritt 4. Wenn Sie nur den Client benötigen, ignorieren Sie Schritt 3. Sie können alle Ressourcen dieses Beispiels im src/examples -Verzeichnis dieses Repositorys finden.
[
{
"name" : " sayHello " ,
"params" : {
"name" : " Peter "
},
"returns" : " Hello Peter "
},
{
"name" : " notifyServer "
}
]Der Typ eines Rückgabewerts oder Parameters wird durch das ihm zugewiesene wörtliche zugewiesen. Die generierten Stubs verwenden den Typ "Returns", um die Antwort zu validieren. In diesem Beispiel können Sie sehen, wie Sie Methoden und Benachrichtigungen angeben.
Rufen Sie JSONRPCSTUB an:
jsonrpcstub spec.json --cpp-server=AbstractStubServer --cpp-client=StubClient
mkdir -p gen
mv abstractstubserver.h gen
mv stubclient.h gen Dies erzeugt einen AbstractStubServer und eine StubClient -Klasse und verschiebt sie in den gen .
Erweitern Sie den abstrakten Serverstub und implementieren Sie alle in spec.json definierten reinen virtuellen (abstrakten) Methoden.
Siehe SRC/Beispiele/Stubserver.cpp
In der Hauptfunktion wird der Betonserver so instanziiert und gestartet. Das ist alles für den Server. Jeder JSON-RPC 2.0-konforme Client kann jetzt eine Verbindung zu Ihrem Server herstellen.
Kompilieren Sie den Server mit:
g++ stubserver.cpp -ljsoncpp -lmicrohttpd -ljsonrpccpp-common -ljsonrpccpp-server -o sampleserverSiehe SRC/Beispiele/stubclient.cpp
Kompilieren Sie den Kunden mit:
g++ stubclient.cpp -ljsoncpp -lcurl -ljsonrpccpp-common -ljsonrpccpp-client -o sampleclientBitte werfen Sie einen Blick auf den Beitrag.md
Sie können auch über spenden
Changelogs finden Sie hier.
Wir tun unser Bestes, um die API/ABI stabil zu halten und Probleme bei der Aktualisierung dieses Frameworks zu vermeiden. Hier finden Sie einen Bericht über den Kompatibilitätsbericht.
Dieser Rahmen ist unter MIT lizenziert. Alle diese Bibliothekenabhängigkeiten sind unter MIT -kompatiblen Lizenzen lizenziert.
Wenn Sie diese Bibliothek verwenden und sie nützlich finden, würde ich mich sehr freuen, wenn Sie mich darüber informieren.