问题标签 [erlang-driver]
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.
erlang - 如何通过命令行运行 cassandra erlang 客户端?
我无法在 ubuntu 中构建和测试以下 cassandra erlang 客户端。https://github.com/matehat/cqerl#connecting . 怎么做?
frameworks - 关于erlang日志框架的一些东西
我们尝试使用 lager 作为我们的日志框架。但是我们遇到了一些问题。
lager 可能会丢失一些日期,我们看过 lager 的源代码,我认为原因是 gen_event notify 是异步调用,它不能保证消息接收。
较大的性能还不够好。我只是猜测这是因为 lager 的文件后端是由 erlang 编写的。所以它没有很好的表现。
所以,我觉得用C写的,用Erlang封装的日志框架可能是个不错的选择。
你知道任何符合要求的 Erlang 框架吗?
erlang - Erlang - 从封闭的花括号中解析数据
Erlang 专家,我从 ejabberd 服务器得到如下数据
我对这种数据类型非常困惑。我所需要的只是从附带的花括号中取出 timok。{} 但不确定如何获取值。任何获取值的代码都会很有帮助。目前我正在使用下面的代码打印值
再次感谢您的时间和精力。
erlang - 是否有可用于在驱动程序 C 代码中测试 Erlang 版本的宏?
Erlang R15B 添加了ErlDrvSSizeT
typedef,R16B 添加了erl_drv_output_term
函数并弃用了旧的等效项。有没有办法用预处理器宏测试这些差异,以支持具有相同代码的旧 Erlang 版本?
c - C 可变参数函数的行为与 Erlang 驱动程序中预期的等效代码不同
我替换了以下代码
(其中dataset_p
有类型ErlDrvTermData**
并且term_count_p
是int*
)
其中append_to_dataset
定义为
(差异看出这是全部差异)。在我看来,行为应该完全相同,但是当测试通过原始代码时,新版本失败并显示错误消息:
我怎么了?
erlang - R16B 之前的 driver_async_port_key 替代方案
根据功能的erl_driver 文档driver_async_port_key
,
在 OTP-R16 之前,实际的 port id 可以通过适当的转换作为 key,但是在 port 子系统重写之后,情况就不再如此了。使用此功能,您可以实现与 OTP-R16 之前相同的基于端口 ID 的分配。
什么是正确的铸造?
erlang - aerospike ejabberd 集成中的“错误连接句柄”
尝试将 Aerospike 与 Ejabberd 集成,经过一番挣扎,我遇到了另一个问题,上面写着
“ DEBUG:[util_extract_common_lead_parms()]:Connection Handle is bad C(0) DEBUG:[util_extract_common_lead_parms()]:Connection Handle is bad C(32680) “我通过以下方式建立了连接,
erlang - Erlang 驱动程序 erl_errno 问题
我在玩erl_driver
。我的驱动程序的开始回调如下:
ErlDrvData drv_start(ErlDrvPort port, char* command) {
char* file_name = command + sizeof(drv_name);
GenTtyData* port_data = (GenTtyData*)driver_alloc(sizeof(GenTtyData));
erl_errno = gt_open(file_name, &port_data->file);
if (erl_errno != 0) {
// Assertion there is just to show you my intention
assert(erl_errno == ENOENT);
driver_free(port_data);
return ERL_DRV_ERROR_ERRNO;
}
return port_data;
}
ErlDrvData ( start)(ErlDrvPort 端口,字符命令)
所以我希望它erlang:open_port/2
会发送包含错误描述的退出信号(eacces
例如,或enotty
)。但是,在测试中我有
{'EXIT',
{unknown,
[{erlang,open_port,[{spawn,"gen_tty_drv non_existent.tty"},[]],[]},
{gen_tty,open,1,
[{file,
"/home/vkovalev/workspace/gen_tty_drv/_build/test/lib/gen_tty/src/gen_tty.erl"},
{line,48}]},
{gen_tty_drv_SUITE,open_non_existent_file,1,
[{file,
"/home/vkovalev/workspace/gen_tty_drv/test/gen_tty_drv_SUITE.erl"},
{line,29}]},
{test_server,ts_tc,3,[{file,"test_server.erl"},{line,1450}]},
{test_server,run_test_case_eval1,6,
[{file,"test_server.erl"},{line,1026}]},
{test_server,run_test_case_eval,9,
[{file,"test_server.erl"},{line,968}]}]}}
似乎 erlang 没有看到或无法解码错误原因并发送unknown
. 那么我的start
回调有什么问题?
erlang - 在不牺牲可伸缩性的情况下,在 Erlang 中执行计算密集型任务的最佳方法是什么?
Erlang 互操作性指南讨论了不同的互操作性机制。以下是我的结论:
端口和 Erl_Interface 程序:操作系统调度,限制可扩展性。
端口驱动程序:很危险,因为端口驱动程序崩溃也会导致模拟器崩溃。
C 节点:节点服务器需要像 Erlang 应用程序一样扩展,以避免牺牲可扩展性。
NIF:Loic很好地总结了它们。
一些人提倡使用 OpenCL,基本上将资源匮乏的计算委托给 GPU,同时让 Erlang 模拟器拥有 CPU。这听起来棒极了,但是你需要你的服务器有一个合适的 GPU。
使用 JInterface 并与为每个请求生成一个线程的 Java 进程通信可能是一种选择。
那么有没有人遇到过经过实践测试并证明效果很好的解决方案?
erlang - erlang中进程之间的消息传递?
如何通过 Erlang 中的消息传递将列表的所有元素从原始进程一个一个发送到另一个进程?