From 8a1d6ca22822ea8d332a3ffa535d74903b98c475 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 20 Mar 2010 02:09:20 +0100 Subject: [PATCH] docs: Update thread communication docs --- docs/_static/thread_communication.png | Bin 48279 -> 46887 bytes docs/_static/thread_communication.txt | 66 +++++++++++++------------- docs/development/internals.rst | 16 +++++-- 3 files changed, 44 insertions(+), 38 deletions(-) diff --git a/docs/_static/thread_communication.png b/docs/_static/thread_communication.png index 5703b1044e8f1d1c31a43f5956fc5a7441c4aead..95bf1892dff82ebfc806f4595ded3abfec6061fe 100644 GIT binary patch literal 46887 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 z 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 literal 48279 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 TcQvR@6bf~h;?Bq&+86&1{emKs diff --git a/docs/_static/thread_communication.txt b/docs/_static/thread_communication.txt index 66ed34e9..4119004e 100644 --- a/docs/_static/thread_communication.txt +++ b/docs/_static/thread_communication.txt @@ -1,37 +1,37 @@ Script for use with www.websequencediagrams.com =============================================== -Main -> NadMixer: start -activate NadMixer -note over NadMixer: calibrate device -NadMixer -> Main: ready -Main -> MpdHandler/Backend: start -activate MpdHandler/Backend -MpdHandler/Backend -> despotify: connect to Spotify +Main -> Core: create +activate Core +note over Core: create NadMixer +Core -> NadTalker: create +activate NadTalker +note over NadTalker: calibrate device +note over Core: create DespotifyBackend +Core -> despotify: connect to Spotify activate despotify -MpdHandler/Backend -> Main: ready -Main -> MpdServer/MpdSession: start -activate MpdServer/MpdSession -note over MpdServer/MpdSession: open port -MpdServer/MpdSession -> Main: ready -Client -> MpdServer/MpdSession: connect -note over MpdServer/MpdSession: open session -Client -> MpdServer/MpdSession: play 1 -MpdServer/MpdSession -> MpdHandler/Backend: play 1 -MpdHandler/Backend -> despotify: play first track -Client -> MpdServer/MpdSession: setvol 50 -MpdServer/MpdSession -> MpdHandler/Backend: setvol 50 -MpdHandler/Backend -> NadMixer: volume = 50 -Client -> MpdServer/MpdSession: status -MpdServer/MpdSession -> MpdHandler/Backend: status -MpdHandler/Backend -> NadMixer: volume? -NadMixer -> MpdHandler/Backend: volume = 50 -MpdHandler/Backend -> MpdServer/MpdSession: status response -MpdServer/MpdSession -> Client: status response -despotify -> MpdHandler/Backend: end of track callback -MpdHandler/Backend -> despotify: play second track -Client -> MpdServer/MpdSession: stop -MpdServer/MpdSession -> MpdHandler/Backend: stop -MpdHandler/Backend -> despotify: stop -Client -> MpdServer/MpdSession: disconnect -note over MpdServer/MpdSession: close session +note over Core: create MpdFrontend +Main -> Server: create +activate Server +note over Server: open port +Client -> Server: connect +note over Server: open session +Client -> Server: play 1 +Server -> Core: play 1 +Core -> despotify: play first track +Client -> Server: setvol 50 +Server -> Core: setvol 50 +Core -> NadTalker: volume = 50 +Client -> Server: status +Server -> Core: status +Core -> NadTalker: volume? +NadTalker -> Core: volume = 50 +Core -> Server: status response +Server -> Client: status response +despotify -> Core: end of track callback +Core -> despotify: play second track +Client -> Server: stop +Server -> Core: stop +Core -> despotify: stop +Client -> Server: disconnect +note over Server: close session diff --git a/docs/development/internals.rst b/docs/development/internals.rst index ca6edc8a..26aeb86d 100644 --- a/docs/development/internals.rst +++ b/docs/development/internals.rst @@ -43,11 +43,17 @@ not Mopidy. The red nodes lives in the ``main`` process (running an "AlsaMixer" -> "alsaaudio" [ label="use Python library" ] -Thread communication -==================== +Thread/process communication +============================ -.. warning:: - - This is a plan, and does not necessarily reflect what has been implemented. +- Everything starts with ``Main``. +- ``Main`` creates a ``Core`` process which runs the frontend, backend, and + mixer. +- Mixers *may* create an additional process for communication with external + devices, like ``NadTalker`` in this example. +- Backend libraries *may* have threads of their own, like ``despotify`` here + which has additional threads in the ``Core`` process. +- ``Server`` part currently runs in the same process and thread as ``Main``. +- ``Client`` is some external client talking to ``Server`` over a socket. .. image:: /_static/thread_communication.png