在我正在从事的一个项目中(在基于Linux的系统上),我有服务器,它可以有多个客户端。所有这些都发生在一台机器上,因此我使用Unix域套接字作为grpc IPC机制。 现在,客户端之一与服务器在同一进程上下文中运行。在这种情况下,我希望能够绕过 IPC 机制,因为它只会增加开销,并且这里不需要。我正在用 C++ 开发这个。我看到他们的文档中提到了
inProcessChannel
here,但我如何实际创建一个并将其用于我的用例?看起来它只存在于 grpc::Server
命名空间中。
我计划让客户端和服务器最初通过商定的 USD gRPC 通道进行标准通信,以便客户端可以查询服务器的 PID 并检查它自己的 PID,如果匹配,我希望能够使用
inProcessChannel
进行通信(我的理解是它将绕过任何 IPC 开销。
我对如何从客户端创建
inProcessChannel
感到震惊。我找不到任何方法可以通过grpc::CreateChannel
。这是否意味着我必须在服务器中创建它,并将通道传回客户端并使用它创建一个存根并进行通信?
有人可以给我一些指点吗?
类 Test1Client { 民众: // 创建存根 Test1Client(const std::shared_ptrgrpc::ChannelInterface& 通道){} };
grpc::ChannelArguments 参数; auto t = new Test1Client(服务器->InProcessChannel(args));