The most important aspect of Yate is its message-passing system. Modules are passing around messages among them. This allows us to have a bigger flexibility than with plain functions, mainly because messages in Yate can have an arbitrary number of parameters, and can be sent to more than one module by changing the priority.
Yate's four main components are:
- Core - generic classes like String, Thread, Socket, Mutex
- Message Engine - message related classes Message, Engine, Plugin
- Telephony Engine - telephony related classes like Driver, Channel
- Yate Modules - modules of Yate are equal no matter if they are telephony or routing or anything else related, because of the message passing system.