grpc ~master
gRPC implementation for D programming language
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
grpc-dlang
gRPC implementation for D.
Building
Building the protocol buffer compiler for D
$ git clone https://github.com/dcarp/protobuf-d
$ cd protobuf-d
$ dub build :protoc-gen-d
$ sudo cp build/protoc-gen-d /usr/local/bin
Building the gRPC plugin for D
$ git submodule update --init --recursive
# Update Git submodule to latest commit on origin
# git submodule update --remote --merge
$ cd compiler
$ mkdir build
$ cd build
$ cmake ..
$ make -j4
$ sudo cp deps/protobuf/protoc* /usr/local/bin
$ sudo cp grpc_dlang_plugin /usr/local/bin
Building the core library
cd grpc-dlang
dub build
Generating protobuf code
protoc --plugin=/usr/local/bin/protoc-gen-d --d_out=./examples -I ./examples ./examples/helloworld.proto
Generating grpc client and server code
protoc --plugin=protoc-gen-grpc=/usr/local/bin/grpc_dlang_plugin -I ./examples --grpc_out=./examples ./examples/helloworld.proto
Building the examples
- A simple demo
$ cd examples/SimpleDemo/proto/
$ ./generate.sh
$ cd ..
$ ./build.sh
- Demo for streaming
dub build -c=streamexample
./streamexample -f ./examples/route_guide_db.json
Samples
The server
import grpc;
import helloworld.helloworld;
import helloworld.helloworldrpc;
class GreeterImpl : GreeterBase
{
override Status SayHello(HelloRequest request , ref HelloReply reply)
{
reply.message = "hello " ~ request.name;
return Status.OK;
}
}
string host = "0.0.0.0";
ushort port = 50051;
auto server = new Server();
server.listen(host , port);
server.register( new GreeterImpl());
server.start();
The client
import helloworld.helloworld;
import helloworld.helloworldrpc;
import grpc;
import std.stdio;
auto channel = new Channel("127.0.0.1" , 50051);
GreeterClient client = new GreeterClient(channel);
auto request = new HelloRequest();
request.name = "test";
HelloReply reply = client.SayHello(request);
if(reply !is null)
{
writeln(reply.message);
}
The streaming
We implemented the offical example RouteGuide.
Resources
- Registered by zoujiaqing
- ~master released 2 years ago
- huntlabs/grpc-dlang
- www.huntlabs.net
- Apache-2.0
- Copyright (C) 2018-2021 HuntLabs
- Dependencies:
- protobuf, hunt-http
- Versions:
-
0.5.0-beta.2 2022-Mar-06 0.5.0-beta.1 2021-Oct-29 0.4.0-beta.1 2021-Jan-27 0.3.0-beta.5 2020-Oct-28 0.3.0-beta.4 2020-Oct-02 - Download Stats:
-
-
1 downloads today
-
1 downloads this week
-
6 downloads this month
-
1224 downloads total
-
- Score:
- 1.9
- Short URL:
- grpc.dub.pm