.. _module-pw_grpc: ======= pw_grpc ======= .. pigweed-module:: :name: pw_grpc ``pw_grpc`` is an implementation of the gRPC over HTTP2 protocol that utilizes ``pw_rpc`` for code generation and service hosting. It provides classes that map between pw_rpc packets and gRPC HTTP2 frames, allowing pw_rpc services to be exposed as gRPC services. -------- Overview -------- The ``Connection`` class implements the gRPC HTTP2 protocol on top of a socket like stream. Create a new instance every time a new connection is established. It will notify when new RPC calls are started, data is received, the call is cancelled, and when the connection stream should be closed. The ``PwRpcHandler`` class is what maps gRPC events provided by ``Connection`` instances to ``pw_rpc`` packets. It takes a ``pw::rpc::RpcPacketProcessor`` to forward packets to. The ``GrpcChannelOutput`` class is what handles mapping outgoing ``pw_rpc`` packets back to the ``Connection`` send methods, which will translate to gRPC responses. Refer to the ``test_pw_rpc_server.cc`` file for detailed usage example of how to integrate into a ``pw_rpc`` network.