30 lines
1.2 KiB
ReStructuredText
30 lines
1.2 KiB
ReStructuredText
.. _concepts:
|
|
|
|
**********************************************
|
|
The backend, controller, and provider concepts
|
|
**********************************************
|
|
|
|
Backend:
|
|
The backend is mostly for convenience. It is a container that holds
|
|
references to all the controllers.
|
|
Controllers:
|
|
Each controller has responsibility for a given part of the backend
|
|
functionality. Most, but not all, controllers delegates some work to one or
|
|
more providers. The controllers are responsible for choosing the right
|
|
provider for any given task based upon i.e. the track's URI. See
|
|
:ref:`core-api` for more details.
|
|
Providers:
|
|
Anything specific to i.e. Spotify integration or local storage is contained
|
|
in the providers. To integrate with new music sources, you just add new
|
|
providers. See :ref:`backend-api` for more details.
|
|
|
|
.. digraph:: backend_relations
|
|
|
|
Backend -> "Current\nplaylist\ncontroller"
|
|
Backend -> "Library\ncontroller"
|
|
"Library\ncontroller" -> "Library\nproviders"
|
|
Backend -> "Playback\ncontroller"
|
|
"Playback\ncontroller" -> "Playback\nproviders"
|
|
Backend -> "Stored\nplaylists\ncontroller"
|
|
"Stored\nplaylists\ncontroller" -> "Stored\nplaylist\nproviders"
|