问题标签 [capnproto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
582 浏览

java - 需要帮助创建和安装 capnpc-java (CapnProto for Java)

我有一个项目需要使用 Cap'n Proto for Java。我有一个 Linux 系统,并且我已经成功安装了 Cap'n Proto 架构编译器,如下所述:

https://capnproto.org/install.html

现在按照此处所述的安装说明进行操作:https ://dwrensha.github.io/capnproto-java/index.html ,我似乎无法弄清楚如何生成capnpc-java插件。这里的说明似乎不清楚:

您将需要安装最新版本的 Cap'n Proto 模式编译器。然后,运行 make 应该构建 capnpc-java。

从哪里运行make?我是从$WORKDIR/capnproto-java目录中做到的,但这不起作用。

我做的另一种方法是按照cmakefrom 的说明进行操作,$WORKDIR/capnproto-java/cmake/README.md但这也不起作用。根据那个 README.md:

mkdir build
cd build
cmake -DCAPNP_PKG_PATH=[path of Capnproto pkgconfig directory (with capnp.pc)] [path of CMakeLists.txt]

where 我设置CAPNP_PKG_PATH$WORKDIR/capnproto/c++/pkgconfig目录的路径,而to[path of CMakeLists.txt]是我系统上的目录。$WORKDIR/capnproto$WORKDIR

任何人都可以帮忙吗?我不是 make system、Makefile 或 cmake 方面的专家。在哪里capnpc-java创建?当我做 awhich capnpc-java时,什么都没有出现(但是,我可以成功which capnp,它位于/usr/local/bin/

0 投票
1 回答
178 浏览

c++ - 在 Cap'n Proto RPC 服务器中定期运行函数

我有一个 Cap'n Proto RPC 服务器,它在一个窗口中运行一些 OpenGL 命令。我对窗口的事件根本不感兴趣,但为了避免在 Windows 上被杀死,我需要大约每秒轮询一次事件。我怎样才能以简单的方式做到这一点?

我读过你可以制作自己的 EventPort,但我不知道如何实际使用 EventPort。当我实际上对这些事件不感兴趣时​​,这也可能是矫枉过正。如果可能的话,我想优先考虑 RPC 事件而不是轮询窗口。

使用 EZ-rpc 以外的其他东西并不是一个缺点,因为我想稍后转向共享内存通信。

0 投票
0 回答
164 浏览

rust - Cap'n Proto 如何处理千兆字节级别的数据发送?

我正在尝试基于 Rust 中的 Cap'n Proto RPC 构建客户端/服务器应用程序。查看计算器示例代码,RPC 想要将所有内容都推送到单个往返调用中。这太棒了,但是当要发送的数据是千兆字节时,它会如何表现?图书馆会尝试将其全部保存在内存中,还是会在某个时候意识到这太多了?

注意:我还没有要显示的代码,但我理想的客户端伪代码是:

我将如何构建我的客户端代码?我是否必须在某个时候强制刷新(从外观上看,从服务器读取一些虚拟数据)?

到目前为止,服务器看起来很简单,只是在文件和块到来时处理它们,但如果那里有任何陷阱,我也会全神贯注。

0 投票
1 回答
103 浏览

c++ - capnp - how to write plain serialized message to a file

I have build the example of the AddressBook from Example Usage. It worked as expected I serialized it in the packed format writePackedMessageToFd(fd, message), but when I tried to serialize it in the 'plain' format writeMessageToFd(fd, message)

it kept producing empty file... I feel that I'm missing something...

0 投票
1 回答
183 浏览

c++11 - 如何在 C++ 中初始化之前声明一个 CAPnPROTO 构建器?

我是 CAP'N PROTO 的新手。我已经创建了 cap'n proto 结构和下面提到的结构的一部分:

}**

然后,我正在我的 C++ 代码中编写一个构建器,如下所示:
::capnp::MallocMessageBuilder message; InjectorRequestMsg::Builder injectorRequestMsg = message.initRoot<InjectorRequestMsg>();

然后,后续分配也可以正常工作,我可以设置所有值。但是,当我尝试声明和初始化 InjectorRequestMsg::Builder 时
InjectorRequestMsg::Builder injectorRequestMsg; injectorRequestMsg = message.initRoot<InjectorRequestMsg>();

然后,它给出以下错误: capnproto/InjectorMessage.capnp.h:197:3: error: declared here Builder() = delete; // 删除以阻止不正确的使用。

因此,您能否帮助我理解如何在两个不同的步骤中声明和初始化 InjectorRequestMsg::Builder injectorRequestMsg,以便我将 InjectorRequestMsg::Builder injectorRequestMsg 作为 C++ 类的数据成员和 C++ 类的所有成员函数可以访问吗?

0 投票
1 回答
371 浏览

c++11 - 如何将构建器对象写入 C++ 中 Cap'n Proto 中的输出流对象而不是文件?

我正在创建一个这样的 CAP'N PROTO 构建器对象:

/然后设置 injectorRequestMsg 的所有数据成员/
之后我试图将对象写入这样的文件:

这完美地工作。但是,我无法弄清楚如何使用以下方法将此对象写入输出流对象:

实际上,我在创建kj::BufferedOutputStream对象时遇到了问题。
关于这方面的任何想法或一个简单的例子都会对我有很大帮助。
谢谢!

0 投票
3 回答
6684 浏览

serialization - FlatBuffers 与 Protobuf

我的问题是,如果 FlatBuffers 比 Protobuf 快得多,为什么它没有比 Protobuf 更广泛地使用?

它曾经是一个实验性的东西,但它现在似乎已经足够成熟但还没有被广泛使用。似乎人们大多将 Flatbuffers 用于移动应用程序/游戏。为什么会这样?

0 投票
1 回答
302 浏览

cmake - 不为 capnp_generate_cpp() 生成 cpp 文件

我的 cmake 文件有 temp.capnp 文件

这样,它不会为 capnp 生成相应的文件,也不会给出任何错误。我在这里想念什么?

0 投票
1 回答
402 浏览

rust - 如何设置 Cap'n Proto RPC 消息遍历限制?

我需要使用超过默认消息遍历限制的 Rust Cap'n Proto API 发送 RPC。当我尝试发送消息时,我收到以下错误:

如果我正在使用 阅读消息capnp::serialize::read_message,我可以提供一个ReaderOptions指定新遍历限制的结构。

但是,我正在发出和发送计算器示例中的请求,而不是直接阅读消息。如何设置请求消息的遍历限制?

0 投票
1 回答
36 浏览

capnproto - CapnProto 对字符串进行两次编码

我有一个简单struct的包含一些东西,还有一个Text字段。我正在查看使用 Capnp 编码此数据的结果,并且由于某种原因,文本字段的值出现在编码输出中两次!这似乎不是很有效或理智。为什么会这样?