1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/huntlabs-grpc-dlang

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

grpc-dlang

gRPC реализация для D.

Сборка

Компилятор протокола для 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

Плагин gRPC для D

$ git submodule update --init --recursive
# Обновление подмодуля Git до последнего коммита на 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

Основная библиотека

cd grpc-dlang
dub build

Генерация кода протокола

protoc --plugin=/usr/local/bin/protoc-gen-d --d_out=./examples -I ./examples ./examples/helloworld.proto

Создание клиентского и серверного кода gRPC

protoc --plugin=protoc-gen-grpc=/usr/local/bin/grpc_dlang_plugin -I ./examples --grpc_out=./examples ./examples/helloworld.proto

Сборка примеров

  1. Простой демо-пример
$ cd examples/SimpleDemo/proto/
$ ./generate.sh
$ cd ..
$ ./build.sh 
  1. Демо для потоковой передачи
dub build -c=streamexample
./streamexample -f ./examples/route_guide_db.json

Примеры

Сервер

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();

Клиент

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);
}

Потоковая передача

Мы реализовали официальный пример RouteGuide.

Ресурсы

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/huntlabs-grpc-dlang.git
git@api.gitlife.ru:oschina-mirror/huntlabs-grpc-dlang.git
oschina-mirror
huntlabs-grpc-dlang
huntlabs-grpc-dlang
master