Add documentation about Sound Manager and Audio Manager architecture
[staging/soundmanager.git] / doc / parts / seq_changevolume.svg
diff --git a/doc/parts/seq_changevolume.svg b/doc/parts/seq_changevolume.svg
new file mode 100644 (file)
index 0000000..c76c6d5
--- /dev/null
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="788px" preserveAspectRatio="none" style="width:1211px;height:788px;background:#EEEBDC;" version="1.1" viewBox="0 0 1211 788" width="1211px" zoomAndPan="magnify"><defs><filter height="300%" id="flykg8xl504cw" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#EEEBDC" height="766.2969" style="stroke: #DEB887; stroke-width: 1.0;" width="142" x="347.5" y="4"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="113" x="362" y="15.1387">CommandPlugIn</text><rect fill="#EEEBDC" height="766.2969" style="stroke: #DEB887; stroke-width: 1.0;" width="427" x="491.5" y="4"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="169" x="620.5" y="15.1387">Audio Manager Daemon</text><rect fill="#EEEBDC" height="766.2969" style="stroke: #DEB887; stroke-width: 1.0;" width="128" x="963.5" y="4"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="99" x="978" y="15.1387">RoutingPlugIn</text><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="185.3984" style="stroke: #404040; stroke-width: 1.0;" width="10" x="40.5" y="93.9688"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="30" style="stroke: #404040; stroke-width: 1.0;" width="10" x="40.5" y="728.1641"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="164.3984" style="stroke: #404040; stroke-width: 1.0;" width="10" x="223.5" y="114.9688"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="101.1328" style="stroke: #404040; stroke-width: 1.0;" width="10" x="223.5" y="657.0313"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="121.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="413.5" y="144.1016"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="43.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="413.5" y="627.8984"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="53.1328" style="stroke: #404040; stroke-width: 1.0;" width="10" x="568" y="198.2344"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="189.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="709.5" y="237.3672"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="111.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="709.5" y="573.8984"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="164.3984" style="stroke: #404040; stroke-width: 1.0;" width="10" x="841.5" y="534.7656"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="68.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="1022.5" y="358.3672"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="193.5313" style="stroke: #404040; stroke-width: 1.0;" width="10" x="1022.5" y="505.6328"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="93.1328" style="stroke: #404040; stroke-width: 1.0;" width="10" x="1154.5" y="412.5"/><line style="stroke: #404040; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="45" x2="45" y1="83.9688" y2="776.2969"/><line style="stroke: #404040; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="228" x2="228" y1="83.9688" y2="776.2969"/><line style="stroke: #404040; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="418.5" x2="418.5" y1="83.9688" y2="776.2969"/><line style="stroke: #404040; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="572.5" x2="572.5" y1="83.9688" y2="776.2969"/><line style="stroke: #404040; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="714.5" x2="714.5" y1="83.9688" y2="776.2969"/><line style="stroke: #404040; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="846.5" x2="846.5" y1="83.9688" y2="776.2969"/><line style="stroke: #404040; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="1027.5" x2="1027.5" y1="83.9688" y2="776.2969"/><line style="stroke: #404040; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="1159.5" x2="1159.5" y1="83.9688" y2="776.2969"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="69" x="8" y="81.1387">Application</text><ellipse cx="45.5" cy="13" fill="#FFFACD" filter="url(#flykg8xl504cw)" rx="8" ry="8" style="stroke: #000000; stroke-width: 2.0;"/><path d="M45.5,21 L45.5,48 M32.5,29 L58.5,29 M45.5,48 L32.5,63 M45.5,48 L58.5,63 " fill="#FFFACD" filter="url(#flykg8xl504cw)" style="stroke: #000000; stroke-width: 2.0;"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="27.9688" style="stroke: #000000; stroke-width: 1.5;" width="109" x="172" y="51"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="95" x="179" y="69.1387">SoundManager</text><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="27.9688" style="stroke: #000000; stroke-width: 1.5;" width="130" x="351.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="116" x="358.5" y="69.1387">IAmCommandSend</text><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="27.9688" style="stroke: #000000; stroke-width: 1.5;" width="151" x="495.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="137" x="502.5" y="69.1387">IAmCommandReceiver</text><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="27.9688" style="stroke: #000000; stroke-width: 1.5;" width="104" x="660.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="667.5" y="69.1387">AudioManager</text><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="27.9688" style="stroke: #000000; stroke-width: 1.5;" width="132" x="778.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="785.5" y="69.1387">IAmRoutingReceive</text><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="27.9688" style="stroke: #000000; stroke-width: 1.5;" width="116" x="967.5" y="51"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="102" x="974.5" y="69.1387">IAmRoutingSend</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="1113.5" y="81.1387">Audio Domain</text><ellipse cx="1159.5" cy="13" fill="#FFFACD" filter="url(#flykg8xl504cw)" rx="8" ry="8" style="stroke: #000000; stroke-width: 2.0;"/><path d="M1159.5,21 L1159.5,48 M1146.5,29 L1172.5,29 M1159.5,48 L1146.5,63 M1159.5,48 L1172.5,63 " fill="#FFFACD" filter="url(#flykg8xl504cw)" style="stroke: #000000; stroke-width: 2.0;"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="185.3984" style="stroke: #404040; stroke-width: 1.0;" width="10" x="40.5" y="93.9688"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="30" style="stroke: #404040; stroke-width: 1.0;" width="10" x="40.5" y="728.1641"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="164.3984" style="stroke: #404040; stroke-width: 1.0;" width="10" x="223.5" y="114.9688"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="101.1328" style="stroke: #404040; stroke-width: 1.0;" width="10" x="223.5" y="657.0313"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="121.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="413.5" y="144.1016"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="43.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="413.5" y="627.8984"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="53.1328" style="stroke: #404040; stroke-width: 1.0;" width="10" x="568" y="198.2344"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="189.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="709.5" y="237.3672"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="111.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="709.5" y="573.8984"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="164.3984" style="stroke: #404040; stroke-width: 1.0;" width="10" x="841.5" y="534.7656"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="68.2656" style="stroke: #404040; stroke-width: 1.0;" width="10" x="1022.5" y="358.3672"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="193.5313" style="stroke: #404040; stroke-width: 1.0;" width="10" x="1022.5" y="505.6328"/><rect fill="#00FF00" filter="url(#flykg8xl504cw)" height="93.1328" style="stroke: #404040; stroke-width: 1.0;" width="10" x="1154.5" y="412.5"/><polygon fill="#000000" points="211.5,110.9688,221.5,114.9688,211.5,118.9688,215.5,114.9688" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="50.5" x2="217.5" y1="114.9688" y2="114.9688"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="57.5" y="110.0356">call("SetVolume")</text><polygon fill="#000000" points="401.5,140.1016,411.5,144.1016,401.5,148.1016,405.5,144.1016" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="233.5" x2="407.5" y1="144.1016" y2="144.1016"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="240.5" y="139.1685">SetVolume()</text><polygon fill="#000000" points="556,194.2344,566,198.2344,556,202.2344,560,198.2344" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="423.5" x2="562" y1="198.2344" y2="198.2344"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="430.5" y="193.3013">SetVolume()</text><polygon fill="#000000" points="697.5,233.3672,707.5,237.3672,697.5,241.3672,701.5,237.3672" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="578" x2="703.5" y1="237.3672" y2="237.3672"/><polygon fill="#000000" points="434.5,247.3672,424.5,251.3672,434.5,255.3672,430.5,251.3672" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="428.5" x2="572" y1="251.3672" y2="251.3672"/><polygon fill="#000000" points="244.5,261.3672,234.5,265.3672,244.5,269.3672,240.5,265.3672" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="238.5" x2="417.5" y1="265.3672" y2="265.3672"/><polygon fill="#000000" points="56.5,275.3672,46.5,279.3672,56.5,283.3672,52.5,279.3672" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="50.5" x2="227.5" y1="279.3672" y2="279.3672"/><polygon fill="#000000" points="1010.5,354.3672,1020.5,358.3672,1010.5,362.3672,1014.5,358.3672" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="719.5" x2="1016.5" y1="358.3672" y2="358.3672"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="145" x="726.5" y="353.4341">asyncSetSinkVolume()</text><polygon fill="#000000" points="1142.5,408.5,1152.5,412.5,1142.5,416.5,1146.5,412.5" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="1032.5" x2="1148.5" y1="412.5" y2="412.5"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="1039.5" y="407.5669">SetVolume()</text><polygon fill="#000000" points="725.5,422.6328,715.5,426.6328,725.5,430.6328,721.5,426.6328" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="719.5" x2="1026.5" y1="426.6328" y2="426.6328"/><polygon fill="#000000" points="1043.5,501.6328,1033.5,505.6328,1043.5,509.6328,1039.5,505.6328" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="1037.5" x2="1158.5" y1="505.6328" y2="505.6328"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="103" x="1049.5" y="500.6997">ackSetVolume()</text><polygon fill="#000000" points="862.5,530.7656,852.5,534.7656,862.5,538.7656,858.5,534.7656" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="856.5" x2="1021.5" y1="534.7656" y2="534.7656"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="152" x="868.5" y="529.8325">ackSetVolumeChange()</text><polygon fill="#000000" points="730.5,569.8984,720.5,573.8984,730.5,577.8984,726.5,573.8984" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="724.5" x2="840.5" y1="573.8984" y2="573.8984"/><polygon fill="#000000" points="434.5,623.8984,424.5,627.8984,434.5,631.8984,430.5,627.8984" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="428.5" x2="708.5" y1="627.8984" y2="627.8984"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="121" x="440.5" y="622.9653">cbVolumeChanged</text><polygon fill="#000000" points="244.5,653.0313,234.5,657.0313,244.5,661.0313,240.5,657.0313" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="238.5" x2="412.5" y1="657.0313" y2="657.0313"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="161" x="250.5" y="652.0981">signal("volumeChanged")</text><polygon fill="#000000" points="697.5,667.1641,707.5,671.1641,697.5,675.1641,701.5,671.1641" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="418.5" x2="703.5" y1="671.1641" y2="671.1641"/><polygon fill="#000000" points="829.5,681.1641,839.5,685.1641,829.5,689.1641,833.5,685.1641" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="714.5" x2="835.5" y1="685.1641" y2="685.1641"/><polygon fill="#000000" points="1015.5,695.1641,1025.5,699.1641,1015.5,703.1641,1019.5,699.1641" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="846.5" x2="1021.5" y1="699.1641" y2="699.1641"/><polygon fill="#000000" points="61.5,724.1641,51.5,728.1641,61.5,732.1641,57.5,728.1641" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="55.5" x2="222.5" y1="728.1641" y2="728.1641"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="154" x="67.5" y="723.231">event [volumeChanged]</text><!--
+@startuml
+hide footbox
+
+'skinparam defaultFontSize 10
+skinparam backgroundColor #EEEBDC
+skinparam sequenceGroupHeaderFontSize 12
+
+skinparam sequence {
+    ArrowColor black
+
+    ActorBorderColor black
+
+    LifeLineBorderColor #404040
+    LifeLineBackgroundColor #404040
+       
+    ParticipantBorderColor black
+    ParticipantBackgroundColor #00FF00
+    ParticipantFontSize 12
+    ParticipantFontColor black
+
+    ActorBackgroundColor #FFFACD
+    ActorFontColor black
+    ActorFontSize 12
+
+
+    BoxBorderColor #deb887
+    BoxFontSize 12
+    TitleFontSize 20
+}
+
+
+actor Application as AP
+participant SoundManager as SM
+box "CommandPlugIn" #EEEBDC
+    participant IAmCommandSend as CS
+end box
+box "Audio Manager Daemon" #EEEBDC
+    participant IAmCommandReceiver as CR
+    participant AudioManager as AM
+    participant IAmRoutingReceive as RR
+end box
+box "RoutingPlugIn" #EEEBDC
+    participant IAmRoutingSend as RS
+end box
+actor "Audio Domain" as AD
+
+
+activate AP #00ff00
+AP -> SM : call("SetVolume")
+activate SM #00ff00
+SM -> CS : SetVolume()
+activate CS #00ff00
+|||
+CS -> CR : SetVolume()
+activate CR #00ff00
+|||
+CR -> AM
+activate AM #00ff00
+
+CR - -> CS
+deactivate CR
+CS- ->SM
+deactivate CS
+SM- ->AP
+deactivate SM
+deactivate AP
+
+|||
+|||
+AM -> RS : asyncSetSinkVolume()
+activate RS #00ff00
+|||
+RS -> AD : SetVolume()
+activate AD #00ff00
+RS - -> AM
+deactivate RS
+deactivate AM
+|||
+|||
+AD -> RS : ackSetVolume()
+deactivate AD
+activate RS #00ff00
+
+RS -> RR : ackSetVolumeChange()
+activate RR #00ff00
+|||
+RR -> AM
+activate AM #00ff00
+|||
+AM -> CS : cbVolumeChanged
+activate CS #00ff00
+CS -> SM : signal("volumeChanged")
+activate SM #00ff00
+CS- ->AM
+deactivate CS
+AM- ->RR
+deactivate AM
+RR- ->RS
+deactivate RR
+deactivate RS
+SM -> AP : event [volumeChanged]
+activate AP #00ff00
+deactivate SM
+deactivate AP
+@enduml
+
+PlantUML version 1.2017.16beta5(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file