diff options
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__()) |