Provided by: erlang-manpages_18.3-dfsg-1ubuntu3.1_all bug

NAME

       megaco_flex_scanner - Interface module to the flex scanner linked in driver.

DESCRIPTION

       This  module  contains the public interface to the flex scanner linked in driver. The flex
       scanner performs the scanning phase of text message decoding.

       The flex scanner is written using a tool called flex. In order to be able to  compile  the
       flex scanner driver, this tool has to be available.

       By  default  the flex scanner reports line-number of an error. But it can be built without
       line-number reporting. Instead token number is used. This will speed up the scanning  some
       5-10%. Use --disable-megaco-flex-scanner-lineno when configuring the application.

       The scanner will, by default, be built as a reentrant scanner if the flex utility supports
       this (it depends on the version of flex). It is possible to explicitly disable  this  even
       when  flex  support this. Use --disable-megaco-reentrant-flex-scanner when configuring the
       application.

DATA TYPES

       megaco_ports() = term()
       megaco_version() = integer() >= 1

EXPORTS

       start() -> {ok, PortOrPorts} | {error, Reason}

              Types:

                 PortOrPorts = megaco_ports()
                 Reason = term()

              This function is used to start the flex scanner. It locates the library  and  loads
              the linked in driver.

              On  a  single  core  system  or  if  it's a non-reentrant scanner, a single port is
              created. On a multi-core system with a reentrant scanner,  several  ports  will  be
              created (one for each scheduler).

              Note  that  the process that calls this function must be permanent. If it dies, the
              port(s) will exit and the driver unload.

       stop(PortOrPorts) -> stopped

              Types:

                 PortOrPorts = megaco_ports()

              This function is used to stop the flex scanner. It also unloads the driver.

       is_reentrant_enabled() -> Boolean

              Types:

                 Boolean = boolean()

              Is the flex scanner reentrant or not.

       is_scanner_port(Port, PortOrPorts) -> Boolean

              Types:

                 Port = port()
                 PortOrPorts = megaco_ports()
                 Boolean = boolean()

              Checks if a port is a flex scanner port or not (useful when if a port exits).

       scan(Binary,  PortOrPorts)  ->  {ok,  Tokens,  Version,  LatestLine}  |  {error,   Reason,
       LatestLine}

              Types:

                 Binary = binary()
                 PortOrPorts = megaco_ports()
                 Tokens = list()
                 Version = megaco_version()
                 LatestLine = integer()
                 Reason = term()

              Scans a megaco message and generates a token list to be passed on the parser.