Siena Fast Forwarding Documentation (v. 1.13.0)
Siena Fast Forwarding API Documentation

This documentation describes the application programmer interface of the Siena Fast Forwarding module. Technical documentation including the design of the forwarding algorithm and the general architecture of the forwarding module is available in a technical paper.

This implementation consists of a fowarding table and a driver program. A forwarding table is a one-to-one association of predicates to interfaces. A predicate is a disjunction of conjunctions of elementary constraints. The forwarding table provides essentially one match function that takes a message M and outputs the set of interfaces associated with predicates matched by M. The data model of Siena includes the definitions of values, attributes, messages, constraints, filters, and predicates, is presented in the types.h header file.

The forwarding table can be used in two ways:

  1. as an external program, through its driver program; and

  2. as an internal module, through its application programming interface

The driver is a program that reads commands from an input file. The commands understood by the driver include essentially all the operations of the forwarding table. In particular, the driver can add associations of predicates to interfaces, and can request the processing of messages. An example including the main commands accepted by the driver is available in the driver input example from the Example Section. The syntax of the input to the driver is documented here.

The API of the forwarding table is defined by the ForwardingTable class. This class is an interface. Seven concrete implementations are currently available: FwdTable, BTable, SortedBTable, BXTable, BCTable, BDDBTable, and ZDDBTable. These last six implementations (BTable, SortedBTable, BXTable, BCTable, BDDBTable, and ZDDBTable) are based on encoded predicates and messages. Because of the nature of the encoding, these implementations are likely to generate false positives. Therefore, applications using these implementations should be designed to compensate for this behavior. (See BTable for more details.)

In order to use the functionalities of the forwarding table, applications must provide implementations of the Siena data model, by implementing the siena::value, siena::attribute, siena::message, siena::constraint, siena::filter, and siena::predicate interfaces. A complete sample implementation of these interfaces is available from the Example Section.