The VOCAL SIP transceiver manages transactions and implements a transport-independent interface for sending and receiving SIP messages by the application layer. The message send operation used by the state machine is asynchronous: transmissions can occur while the receive operation is blocked. In the stateful mode, the transceiver maintains state for transactions as long as there is at least one undeleted message in the transaction database. The delay for deleting messages can be specified as a compile-time parameter. As part of its transaction management functionality, the transceiver takes care of filtering the duplicate messages and retransmitting messages that have timed out before receiving responses.
At any given time, a state machine is in a particular state. When an event occurs, it causes a transition from one state to another. These events are implemented in the form of operators, which perform some action and move the state machine to a new state based upon the event received and the present state.
If a stack or an application is described as
stateful, it means that past events influence current actions. A state machine is one specific way of implementing or thinking about stateful behavior. The Vovida User Agent and SIP-based servers are state machines. See Chapters 9 and 10 for more information.
We implemented the functionality of the SIP stack by creating the following five major components at the transceiver level: