查看源代码 megaco_flex_scanner (megaco v4.7)

链接到驱动程序中的 flex 扫描器的接口模块。

此模块包含链接到驱动程序中的 flex 扫描器的公共接口。flex 扫描器执行文本消息解码的扫描阶段。

flex 扫描器是使用名为 flex 的工具编写的。为了能够编译 flex 扫描器驱动程序,必须提供此工具。

默认情况下,flex 扫描器会报告错误的行号。但是,它可以构建为不报告行号。而是使用令牌号。这将使扫描速度提高 5-10%。配置应用程序时,请使用 --disable-megaco-flex-scanner-lineno

默认情况下,如果 flex 实用程序支持,扫描器将被构建为可重入扫描器(这取决于 flex 的版本)。即使 flex 支持,也可以显式禁用此功能。配置应用程序时,请使用 --disable-megaco-reentrant-flex-scanner

摘要

类型

成功启动(flex)扫描器的返回值。

函数

flex 扫描器是否可重入。

检查端口是否为 flex 扫描器端口(在端口退出时很有用)。

扫描 megaco 消息并生成要传递给解析器的令牌列表。

此函数用于启动 flex 扫描器。它会找到库并加载链接的驱动程序。

此函数用于停止 flex 扫描器。它还会卸载驱动程序。

类型

-type megaco_ports() :: port() | tuple().

成功启动(flex)扫描器的返回值。

函数

链接到此函数

is_reentrant_enabled()

查看源代码
-spec is_reentrant_enabled() -> boolean().

flex 扫描器是否可重入。

链接到此函数

is_scanner_port(Port, PortOrPorts)

查看源代码
-spec is_scanner_port(Port, PortOrPorts) -> boolean() when Port :: port(), PortOrPorts :: megaco_ports().

检查端口是否为 flex 扫描器端口(在端口退出时很有用)。

链接到此函数

scan(Binary, PortOrPorts)

查看源代码
-spec scan(Binary, PortOrPorts) -> {ok, Tokens, Version, LatestLine} | {error, Reason, LatestLine}
              when
                  Binary :: binary(),
                  PortOrPorts :: megaco_ports(),
                  Tokens :: list(),
                  Version :: megaco_encoder:protocol_version(),
                  LatestLine :: non_neg_integer(),
                  Reason :: term().

扫描 megaco 消息并生成要传递给解析器的令牌列表。

-spec start() -> {ok, PortOrPorts} | {error, Reason}
               when PortOrPorts :: megaco_ports(), Reason :: term().

此函数用于启动 flex 扫描器。它会找到库并加载链接的驱动程序。

在单核系统上或如果它是不可重入的扫描器,则会创建一个端口。在具有可重入扫描器的多核系统上,将创建多个端口(每个调度程序一个)。

请注意,调用此函数的进程必须是永久的。如果它死掉,端口将退出,并且驱动程序将卸载。

-spec stop(PortOrPorts) -> stopped when PortOrPorts :: megaco_ports().

此函数用于停止 flex 扫描器。它还会卸载驱动程序。