How CPL Script Converts to a C++ State Machine

The Feature server executes CPL scripts by parsing them into eXtensible Markup Language (XML) document object model (DOM) trees, turning these trees into state machines and then executing them. The following diagrams show how CPL scripts become features and DOM trees.

Figure 13-3 shows how a script becomes a feature.

The FS turns a script, brought in from Provisioning, into a state machine by calling CPLParser to build the tree. The parser takes a long string provided by the Provisioning server and turns it into a state machine.

How a script becomes a feature

Figure 13-3. How a script becomes a feature

Figure 13-4 shows how a script becomes a DOM tree.

CPLParser: script becomes a DOM tree

Figure 13-4. CPLParser: script becomes a DOM tree

The FS doesn’t really care about this, but when it receives a string of characters, it calls the libxml library, which creates this data structure. The FS uses this structure, but it has to understand a few things, such as how to traverse it and how to get the data it needs. For more information about libxml, see

Types of States and Operators

In the FS state machine are a state object and three different types of operators. One major difference between the FS state machine and the UA’s state machine is that while the UA’s machine never needs more ...

Get Practical VoIP Using VOCAL now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.