Criei uma nova implementação C ++ 17 Cabeçalho-> JSON-RPC-CXX.
Mestre
Essa estrutura fornece suporte a JSON-RPC Cross Platform (chamada de procedimento remoto) para C ++. É totalmente JSON-RPC 2.0 e 1.0 compatíveis.

5 Boas razões para usar Libjson-RPC-CPP em seu próximo projeto RPC
Outras boas razões para usar Libjson-RPC-CPP
make test .
Debian (Stretch) e Ubuntu (15,10 ou mais tarde)
sudo apt-get install libjsonrpccpp-dev libjsonrpccpp-toolsFedora
sudo dnf install libjson-rpc-cpp-devel libjson-rpc-cpp-toolsArch Linux
Para o Arch Linux, há um pkgbuild fornecido na AUR.
sudo aura -A libjson-rpc-cppGentoo Linux
sudo emerge dev-cpp/libjson-rpc-cppMac OS X.
Para o OS X, um pacote de cerveja está disponível:
brew install libjson-rpc-cppWindows
Há um pacote pronto para usar aqui. Basta baixar executar o instalador exe.
Unix
Para sistemas baseados em Debian e Arch GNU/Linux, todas as dependências estão disponíveis através do gerenciador de pacotes. Para o OS X, todas as dependências estão disponíveis na bebida
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É isso!
Se você não estiver satisfeito com isso, basta desinstalá -lo do seu sistema usando (dentro da construção do diretório):
sudo make uninstallOpções de construção:
A configuração padrão deve ser boa para a maioria dos sistemas, mas aqui estão os sinalizadores de compilação disponíveis:
-DCOMPILE_TESTS=NO conjunto de testes de unidade desativa.-DCOMPILE_STUBGEN=NO desativa a construção do stubgenerator.-DCOMPILE_EXAMPLES=NO desabilite exemplos.-DHTTP_SERVER=NO desativar o servidor da web libmicrohttpd.-DHTTP_CLIENT=NO desativar o cliente CURL.-DREDIS_SERVER=NO desativar o conector do servidor Redis.-DREDIS_CLIENT=NO desativar o conector do cliente Redis.-DUNIX_DOMAIN_SOCKET_SERVER=YES Ativar o conector do servidor de soquete do Domain UNIX.-DUNIX_DOMAIN_SOCKET_CLIENT=YES Ativar o conector do cliente de soquete de domínio UNIX.-DFILE_DESCRIPTOR_SERVER=NO desativar o conector do servidor do descritor de arquivo.-DFILE_DESCRIPTOR_CLIENT=NO desativar o conector do cliente do descritor de arquivo.-DTCP_SOCKET_SERVER=NO desativar o conector do servidor de soquete TCP.-DTCP_SOCKET_CLIENT=NO desativar o conector do cliente de soquete TCP. Este exemplo mostrará a maneira mais simples de criar um servidor e cliente RPC. Se você precisar apenas do servidor, ignore a Etapa 4. Se você precisar apenas do cliente, ignore a Etapa 3. Você poderá encontrar todos os recursos desta amostra no diretório src/examples deste repositório.
[
{
"name" : " sayHello " ,
"params" : {
"name" : " Peter "
},
"returns" : " Hello Peter "
},
{
"name" : " notifyServer "
}
]O tipo de valor ou parâmetro de retorno é definido pelo literal atribuído a ele. Os stubs gerados usarão o tipo "Retornos" para validar a resposta. Neste exemplo, você pode ver como especificar métodos e notificações.
Ligue para JSONRPCSTUB:
jsonrpcstub spec.json --cpp-server=AbstractStubServer --cpp-client=StubClient
mkdir -p gen
mv abstractstubserver.h gen
mv stubclient.h gen Isso gera um AbstractStubServer e uma classe StubClient e os move para a pasta gen .
Estenda o Stub do servidor abstrato e implemente todos os métodos Pure Virtual (Resumo) definidos em spec.json .
Consulte SRC/Exemplos/Stubserver.cpp
Na função principal, o servidor de concreto é instanciado e iniciado. Isso é tudo para o servidor. Qualquer cliente compatível com JSON-RPC 2.0 agora pode se conectar ao seu servidor.
Compilar o servidor com:
g++ stubserver.cpp -ljsoncpp -lmicrohttpd -ljsonrpccpp-common -ljsonrpccpp-server -o sampleserverConsulte SRC/Exemplos/Stubclient.cpp
Compilar o cliente com:
g++ stubclient.cpp -ljsoncpp -lcurl -ljsonrpccpp-common -ljsonrpccpp-client -o sampleclientPor favor, dê uma olhada em contribuir.md
Você também pode doar via
Changelogs pode ser encontrado aqui.
Fazemos o possível para manter a API/ABI estável, para evitar problemas ao atualizar essa estrutura. Um relatório de compatibilidade pode ser encontrado aqui.
Essa estrutura é licenciada no MIT. Todas essas dependências de bibliotecas são licenciadas sob licenças compatíveis com o MIT.
Se você usar esta biblioteca e achar útil, eu ficaria muito satisfeito se você me avise.