Application
Orchestrators
Orchestrators delegate the operations on Controllers, which themselves delegate operations to the components (VPNConnection component, VPNAccount component, VPNServers components, etc)
+------+
| View |
+---+--+
|
+--v--+
| App |
+--+--+
|
|
+---------------+ +-------v--------+
| Session | | Connection |
| Orchestrator <--+ Orchestrator +---------+------------------+
+------+--------+ +--------+-------+ | |
| | | |
| | | |
| | +-------v------+ +-----v--------+
| | | VPN Servers | | User Settings|
+-------------+ | | Orchestrator | | Orchestrator |
| | | +-------+------+ +--------------+
| | | |
+-------v---+ | | |
|Proton VPN | +------v------+ +---------v-----+ +-------v------+
|Session | | Credentials | |VPN Connection | | VPN Servers |
|Controller | | Controller | | Controller | | Controller |
+-----------+ +-------------+ +---------------+ +--------------+
See :
proton.vpn.core.controllers.vpnsession.VPNSessionController
proton.vpn.core.controllers.vpnconnection.VPNConnectionController
proton.vpn.core.controllers.vpncredentials.VPNCredentialController
proton.vpn.core.controllers.vpnservers.VPNServersController
For controllers documentation.
Orchestrators
Controllers
Controllers implement the high level business logic of the application, ensuring that the VPN service is in a consistent state.
User Settings
Persistence
Views
An abstract view of the user interface.