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.