diff options
author | Joffrey F <joffrey@docker.com> | 2018-11-15 14:42:49 -0800 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2018-11-15 14:42:49 -0800 |
commit | 941b3054c3876a1f51f3b9d6f23d2dffa343a3de (patch) | |
tree | c25ed7103b40c88eba6d9eec693217541f3b36c4 /docker/api/buildkit/grpc.py | |
parent | e3da30a04d60ba0d322a9bd168f5872c7f59f66e (diff) | |
download | docker-py-buildkit.tar.gz |
WIPbuildkit
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'docker/api/buildkit/grpc.py')
-rw-r--r-- | docker/api/buildkit/grpc.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/docker/api/buildkit/grpc.py b/docker/api/buildkit/grpc.py new file mode 100644 index 0000000..9ee640d --- /dev/null +++ b/docker/api/buildkit/grpc.py @@ -0,0 +1,33 @@ +import grpclib.server + + +class Handler(grpclib.server.Handler): + def __init__(self, headers, *args, **kwargs): + self.headers = headers + super(Handler, self).__init__(*args, **kwargs) + + def accept(self, stream, headers, release_stream): + for k, v in self.headers.items(): + headers.setdefault(k, v) + + +class Server(grpclib.server.Server): + headers = {} + + def add_headers(self, h): + self.headers.update(h) + + def _protocol_factory(self): + self.__gc_step__() + handler = Handler( + self.headers, self._mapping, self._codec, loop=self._loop + ) + self._handlers.add(handler) + return grpclib.server.H2Protocol( + handler, self._config, loop=self._loop + ) + + +class Attachable(object): + def register(self, grpc_server): + grpc_server._mapping.update(self.__mapping__()) |