查看源代码 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 扫描器。它还会卸载驱动程序。
类型
函数
-spec is_reentrant_enabled() -> boolean().
flex 扫描器是否可重入。
-spec is_scanner_port(Port, PortOrPorts) -> boolean() when Port :: port(), PortOrPorts :: megaco_ports().
检查端口是否为 flex 扫描器端口(在端口退出时很有用)。
-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 扫描器。它还会卸载驱动程序。