aboutsummaryrefslogtreecommitdiffstats
path: root/lib/megaco/doc/src/megaco_flex_scanner.xml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/megaco/doc/src/megaco_flex_scanner.xml')
-rw-r--r--lib/megaco/doc/src/megaco_flex_scanner.xml157
1 files changed, 157 insertions, 0 deletions
diff --git a/lib/megaco/doc/src/megaco_flex_scanner.xml b/lib/megaco/doc/src/megaco_flex_scanner.xml
new file mode 100644
index 0000000000..eb206e5d13
--- /dev/null
+++ b/lib/megaco/doc/src/megaco_flex_scanner.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2001</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>megaco_flex_scanner</title>
+ <prepared>Micael Karlberg</prepared>
+ <responsible>Micael Karlberg</responsible>
+ <docno></docno>
+ <approved>Micael Karlberg</approved>
+ <checked></checked>
+ <date>2009-05-04</date>
+ <rev>%VSN%</rev>
+ <file>megaco_flex_scanner.xml</file>
+ </header>
+ <module>megaco_flex_scanner</module>
+ <modulesummary>Interface module to the flex scanner linked in driver.</modulesummary>
+ <description>
+ <p>This module contains the public interface to the flex scanner
+ linked in driver. The flex scanner performs the scanning phase
+ of text message decoding.</p>
+
+ <p>The flex scanner is written using a tool called <em>flex</em>.
+ In order to be able to compile the flex scanner driver, this
+ tool has to be available. </p>
+
+ <p>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 <c><![CDATA[--disable-megaco-flex-scanner-lineno]]></c> when
+ configuring the application.</p>
+
+ <p>The scanner will, by default, be built as a reentrant scanner <em>if</em> 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 <c><![CDATA[--disable-megaco-reentrant-flex-scanner]]></c> when
+ configuring the application.</p>
+
+ </description>
+
+ <section>
+ <title>DATA TYPES</title>
+ <code type="none"><![CDATA[
+
+megaco_ports() = term()
+megaco_version() = integer() >= 1
+
+ ]]></code>
+
+ <marker id="start"></marker>
+ </section>
+
+
+ <funcs>
+ <func>
+ <name>start() -> {ok, PortOrPorts} | {error, Reason}</name>
+ <fsummary></fsummary>
+ <type>
+ <v>PortOrPorts = megaco_ports()</v>
+ <v>Reason = term()</v>
+ </type>
+ <desc>
+ <p>This function is used to start the flex scanner.
+ It locates the library and loads the linked in driver.</p>
+
+ <p>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). </p>
+
+ <p>Note that the process that calls this function <em>must</em>
+ be permanent. If it dies, the port(s) will exit and the driver unload.</p>
+
+ <marker id="stop"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>stop(PortOrPorts) -> stopped</name>
+ <fsummary></fsummary>
+ <type>
+ <v>PortOrPorts = megaco_ports()</v>
+ </type>
+ <desc>
+ <p>This function is used to stop the flex scanner. It also
+ unloads the driver.</p>
+
+ <marker id="is_reentrant_enabled"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>is_reentrant_enabled() -> Boolean</name>
+ <fsummary></fsummary>
+ <type>
+ <v>Boolean = boolean()</v>
+ </type>
+ <desc>
+ <p>Is the flex scanner reentrant or not.</p>
+
+ <marker id="is_scanner_port"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>is_scanner_port(Port, PortOrPorts) -> Boolean</name>
+ <fsummary></fsummary>
+ <type>
+ <v>Port = port()</v>
+ <v>PortOrPorts = megaco_ports()</v>
+ <v>Boolean = boolean()</v>
+ </type>
+ <desc>
+ <p>Checks if a port is a flex scanner port or not (usefull when
+ if a port exits). </p>
+
+ <marker id="scan"></marker>
+ </desc>
+ </func>
+
+ <func>
+ <name>scan(Binary, PortOrPorts) -> {ok, Tokens, Version, LatestLine} | {error, Reason, LatestLine} </name>
+ <fsummary></fsummary>
+ <type>
+ <v>Binary = binary()</v>
+ <v>PortOrPorts = megaco_ports()</v>
+ <v>Tokens = list()</v>
+ <v>Version = megaco_version()</v>
+ <v>LatestLine = integer()</v>
+ <v>Reason = term()</v>
+ </type>
+ <desc>
+ <p>Scans a megaco message and generates a token list to be passed on the parser. </p>
+ </desc>
+ </func>
+
+ </funcs>
+
+</erlref>
+