问题标签 [flatbuffers]
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.
javascript - 无法将向量添加到 FlatBuffer 表(Javascript)
我正在关注FlatBuffers Javascript 教程,但在将非标量项向量添加到以下对象时遇到问题:
如您所见,根对象包含一个Channel
对象向量。我成功生成了我的 javascript 代码,但是在尝试创建一些测试数据时,似乎没有正确添加通道。这是我尝试过的:
这会产生一个名为的文件cc-test.data
,其中包含缓冲区,无论我尝试添加多少个通道,缓冲区始终完全相同。我也尝试像这样解析数据:
这只是打印ControlChannel每次都有 0 个通道。我错过了什么?
c# - FlatBuffers C# CreateSortedVector 和 LookUpByKey
我想在 FlatBuffers 中序列化一个字典。我知道没有等效的字典,但根据https://github.com/google/flatbuffers/blob/master/docs/source/JavaCsharpUsage.md您可以按关键字段对向量进行排序,然后搜索关键。我从 Github 页面下载了 FlatBuffers 1.4 并编译了 dll。但是当我创建模式并在我的项目中使用它时,没有任何类型的方法 CreateSortedVectorOfTables。只有普通的 CreateVector 方法可用。而且我似乎也找不到 LookUpByKey 方法。
这是我的测试架构:
谁能告诉我如何创建一个排序的向量?
提前致谢。
java - 从表中读取字符串时的 indexOutOfBoundExeption
出于某种原因从平面缓冲区读取字符串时,我得到了 IndexOutOfBoundsExpetion。我的架构:
这就是我写缓冲区的方式:
这些是我的模型:
我有一个 lucene 数据库,我正在尝试从中获取一些数据到 flatbuffer 消息中。创建缓冲区时,我没有收到任何错误,但是从第一个缓冲区读取缓冲区时,我得到了 IndexOutOfBoundsExeption。我检查了,解析时字符串不为空。
flatbuffers - 添加表偏移后,Flatbuffer 无法验证
我已经盯着这个太久了,我确定这是我做错了。尝试添加表成员后,我的 flatbuffer 无法验证。如果我只在结构的顶部添加整数,它会很好地验证。
根架构:
上述模式的“C”结构定义
ubyte_table 的架构:
ubyte_table的结构体定义
仅添加 test_int_value 时的字节缓冲区:
添加 ubyte_table 时的字节缓冲区
这是代码:
验证失败的堆栈跟踪
c# - 将现有的 FlatBuffers 对象添加到 FlatBufferBuilder C#
我有两个表,它们都包含一个环境表
顾名思义,第一个表是由许多控制客户端中的一个发出的请求并发送到服务器。服务器以错误代码(结果)响应。如果结果是成功,则将 RESPONSE_SCENARIO_CHANGE_ENVIRONMENT_M 发送给所有客户端。这样,如果环境成功地改变了一个,每个人都会注意到这一事实。
我的问题是,由于我在创建 RESPONSE_SCENARIO_CHANGE_ENVIRONMENT_M 的代码中已经有一个正确填充的环境对象,是否可以采取
问题是
是否有可能得到一个FlatBuffers.Offset<Environment>
from Environment
?
c++ - ZeroMQ C++ 上的简单 FlatBuffer 示例 - 通过 zmq 将结构复制到 flatbuffer 并再次返回到结构
我已经参考了一些示例,并且我正在根据服务器和客户端示例对我的系统进行建模,我觉得我非常接近。
StarBuffer.fbs:
table StarBuffer {
radius: double;
mass: double;
volume: double;
}
root_type StarBuffer;
订阅者.cpp:
发布者.cpp:
编辑:代码编译并工作!我在这里更新了代码,以反映我在本地机器上的工作代码,供人们继续使用,因为这花了我很多时间来完成。
因为我也花了一段时间才弄清楚这些东西,所以这里是构建过程:
flatc --cpp StarBuffer.fbs
mv StarBuffer_generated.h StarBuffer.h
g++ -std=c++11 publisher.cpp -lzmq -o ./bin/zmq_pub
g++ -std=c++11 subscriber.cpp -lzmq -o ./bin/zmq_sub
需要本地目录中的“zhelpers.cpp”和“flatbuffers/flatbuffers.h”。
c++ - 如何正确删除从磁盘读取的 FlatBuffer 对象
我从磁盘读取压缩数据,解压缩它,然后创建一个从 FlatBuffer 方案生成的“单元”对象。
到目前为止,一切都很好。但是如何删除该项目?因为以后不可能访问缓冲区数据。
c - ZeroMQ C 上的简单 Flatbuffers 示例 - 将结构复制到 zmq 上的 flatbuffer 并再次返回到结构
为后代张贴我的作品。在完成我用 C++ 编写的最后一个示例后,我意识到我实际上一直需要用 C 来完成它(太棒了,对吧?)。作为一名 Java 程序员,这两次迭代都花费了我相当大的努力,我认为那里的许多示例代码留下了太多的漏洞——尤其是在构建时,对于习惯使用命令行的人来说,这要困难得多,比如说 Eclipse,构建一个项目并处理依赖项。
如何使用 brew 为 OSX 安装依赖项:
brew install flatcc
brew install zeromq
您还需要安装所有标准构建器二进制文件。我使用 gcc 编译:
gcc publisher.c -o bin/zmq_pub -lzmq -lflatcc
gcc subscriber.c -o bin/zmq_sub -lzmq
这假设您已经安装了 zmq 和 flatcc 库,它们应该在 brew 完成安装后符号链接到您的 /usr/local/include 。像这样:
zmq_cpub $ls -la /usr/local/include
lrwxr-xr-x 1 user group 37 Oct 18 18:43 flatcc -> ../Cellar/flatcc/0.3.4/include/flatcc
您将收到编译错误,例如:
Undefined symbols for architecture x86_64:
如果您没有正确安装/链接库。编译器/链接器将重命名函数并在它们前面加上 _ 并可能使您感到困惑。就像Undefined symbols for architecture x86_64 _flatcc_builder_init
即使永远不应该有一个_flatcc_builder_init
.
这是因为 C / C++ 中的链接库与 Java 中的链接库根本不同。除了添加 JAR 的特定项目构建路径之外,还有可以安装外部 C/C++ 库的已知位置。/usr/local/include
, /usr/local/lib
,/usr/lib
和/usr/include
.
在将 flatcc 二进制文件安装到路径后,不要忘记生成要在本地项目中使用的头文件:
flatcc -a Car.fbs
这应该是我在 C 车道上旅行时遇到的几乎所有障碍。希望它可以帮助那里的人。
java - 将 FlatBuffers 库和生成的源代码导入 Android Studio 项目
我们正在评估FlatBuffers作为打包和解包各种数据有效负载的潜在解决方案。我已经构建了 flatc.exe,为我们的数据构建了模式,并从模式中生成了 Java 代码。我现在正在尝试使用生成的代码。
该概述指出:
然后,您可以同时包含 FlatBuffers 和生成的代码来读取或写入 FlatBuffer。
并在示例中执行以下操作:
1) 生成的代码是否应该作为新模块/Java 库、依赖项或其他内容导入?这是怎么做到的?
2) com.google.flatbuffers.FlatBufferBuilder的导入也无法解析。有谁知道这个参考是否改变了?
感谢您为 Android 新手提供的有关如何导入这些项目的任何帮助。
谢谢。
json - 使用平面缓冲区进行序列化的动态 id 和特殊字符
我有如下的 Json 数据
我的fbs是这样的
我试图实现谷歌平面缓冲区,但我遇到了类似的错误
- alarm.fbs:4:0: 错误:非法字符:!
- alarm.fbs:23:0: 错误:非法字符:$ (我已从 !type 中删除 ! 并将 $ 更改为美元以测试平面缓冲区的工作,但我无法更改动态 ID)
- Sample.json:25:0:错误:未知字段:12279
现在我的问题,
- 是否可以在平面缓冲区中使用动态 ID,如果可能,我应该如何进行?
- 可以在 ids 中使用特殊字符,如果可能的话怎么做?
提前致谢。