1 module grpc.server.builder;
2 import interop.headers;
3 import grpc.server;
4 import core.lifetime;
5 
6 class ServerBuilder {
7     private {
8         ushort _port;
9         int _maxInboundMeta;
10         int _maxInboundMessage;
11         long _timeout;
12         bool _useTLS;
13         string _tlsChain;
14         string _tlsKey;
15         Server _server;
16     }
17 
18     @property ushort port(ushort _new) {
19         _port = _new;
20         return _port;
21     }
22 
23     @property ushort port() {
24         return _port;
25     }
26 
27     void register(T)() {
28         _server.registerService!T();
29     }
30 
31     Server build() {
32         auto mem = gpr_zalloc(__traits(classInstanceSize, Server));
33         Server srv = cast(Server)mem;
34         if (mem != null) {
35             grpc_channel_args args;
36             args.num_args = 1;
37 
38             grpc_arg[] _a;
39             grpc_arg arg;
40             import std.string;
41             arg.type = GRPC_ARG_INTEGER;
42             arg.key = cast(char*)("grpc.server_handshake_timeout_ms".toStringz);
43             arg.value.integer = 1000;
44             _a ~= arg;
45 
46             args.args = _a.ptr; 
47             emplace!Server(srv, args);
48 
49             srv.bind("0.0.0.0", 50051);
50         }
51         else {
52             assert(0, "Allocation failed");
53         }
54 
55         return srv;
56     }
57 
58 
59     this() {
60     }
61 
62     ~this() {
63 
64     }
65         
66 }