Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mitogen
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
nexedi
mitogen
Commits
dcc45bc7
Commit
dcc45bc7
authored
Oct 05, 2017
by
David Wilson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs: Get started on Getting Started
parent
7f3a58d5
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
782 additions
and
2 deletions
+782
-2
docs/getting_started.rst
docs/getting_started.rst
+114
-2
docs/howitworks.rst
docs/howitworks.rst
+3
-0
docs/images/layout.graphml
docs/images/layout.graphml
+665
-0
docs/images/layout.png
docs/images/layout.png
+0
-0
docs/images/radiation.png
docs/images/radiation.png
+0
-0
No files found.
docs/getting_started.rst
View file @
dcc45bc7
...
...
@@ -2,7 +2,98 @@
Getting Started
===============
xxx
.. warning::
This section is incomplete.
Liability Waiver
----------------
.. image:: images/radiation.png
:align: right
Before proceeding, it is crucial you understand what you're involving yourself
and possibly your team with:
* Constructing the most fundamental class, :py:class:`Broker
<mitogen.master.Broker>`, causes a new thread to be spawned, exposing a huge
class of difficult to analyse behaviours that Python software generally does
not suffer from.
While every effort is made to hide this complexity, you should expect
threading-related encounters during development. See :ref:`troubleshooting`
for more information.
* While high-level abstractions are provided, you must understand how Mitogen
works before depending on it. Mitogen interacts with many aspects of the
operating system, network, SSH, sudo, sockets, TTYs, Python runtime, and
timing and ordering uncertainty introduced through interaction with the
network and OS scheduling.
Knowledge of this domain is typically gained through painful years of ugly
attempts hacking system-level programs, and learning through continual
suffering how to debug the messes left behind. If you feel you lack resources
to diagnose problems independently, Mitogen is not appropriate, prefer a
higher level solution instead. Bug reports failing this expectation risk
unfavourable treatment.
Broker And Router
-----------------
.. image:: images/layout.png
.. currentmodule:: mitogen.master
Execution starts when your program constructs a :py:class:`Broker` and
associated :py:class:`Router`. The broker is responsible for multiplexing IO to
children from a private thread, while in children, it is additionally
responsible for ensuring robust destruction if communication with the master
is lost.
:py:class:`Router` is responsible for receiving messages and either dispatching
them to a callback from the broker thread (registered by
:py:meth:`add_handler() <mitogen.core.Router.add_handler>`), or forwarding them
to a :py:class:`Stream <mitogen.core.Stream>`. See :ref:`routing` for an
in-depth description. :py:class:`Router` also doubles as the entry point to
Mitogen's public API.
.. code-block:: python
broker = mitogen.master.Broker()
router = mitogen.master.Router(broker)
try:
# Your code here.
finally:
broker.shutdown()
As your program will not exit if threads are still running when the main thread
exits, it is crucial :py:meth:`Broker.shutdown` is called reliably at exit.
Helpers are provided by :py:mod:`mitogen.utils` to ensure :py:class:`Broker` is
reliably destroyed:
.. code-block:: python
def do_mitogen_stuff(router):
# Your code here.
mitogen.utils.run_with_router(do_mitogen_stuff)
If your program cannot live beneath :py:func:`mitogen.utils.run_with_router` on
the stack, you must must arrange for :py:meth:`Broker.shutdown` to be called
anywhere exit of the main thread may be triggered.
Creating A Context
------------------
Contexts simply refer to external Python programs over which your program has
control. They can be created as subprocesses on the local machine, in another
user account via ``sudo``, on a remote machine via ``ssh``, and in any
recursive combination of the above.
Now a :py:class:`Router` exists, our first :py:class:`Context` can be created.
.. _serialization-rules:
...
...
@@ -28,4 +119,25 @@ User-defined types may not be used, except for:
* :py:class:`mitogen.core.CallError`
* :py:class:`mitogen.core.Context`
* :py:class:`mitogen.core._Dead`
* :py:class:`mitogen.core._DEAD`
.. _troubleshooting:
Troubleshooting
---------------
.. warning::
This section is incomplete.
A typical example is a hang due to your application's main thread exitting
perhaps due to an unhandled exception, without first arranging for any
:py:class:`Broker <mitogen.master.Broker>` to be shut down gracefully.
Another example would be your main thread hanging indefinitely because a bug
in Mitogen fails to notice an event (such as RPC completion) your thread is
waiting for will never complete. Solving this kind of hang is a work in
progress.
router.enable_debug()
docs/howitworks.rst
View file @
dcc45bc7
...
...
@@ -398,6 +398,9 @@ presence of many machines, and would require manually splitting up the parts of
Twisted that we would like to use.
.. _routing:
Message Routing
---------------
...
...
docs/images/layout.graphml
0 → 100644
View file @
dcc45bc7
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphml
xmlns=
"http://graphml.graphdrawing.org/xmlns"
xmlns:java=
"http://www.yworks.com/xml/yfiles-common/1.0/java"
xmlns:sys=
"http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0"
xmlns:x=
"http://www.yworks.com/xml/yfiles-common/markup/2.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:y=
"http://www.yworks.com/xml/graphml"
xmlns:yed=
"http://www.yworks.com/xml/yed/3"
xsi:schemaLocation=
"http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"
>
<!--Created by yEd 3.14.4-->
<key
attr.name=
"Description"
attr.type=
"string"
for=
"graph"
id=
"d0"
/>
<key
for=
"port"
id=
"d1"
yfiles.type=
"portgraphics"
/>
<key
for=
"port"
id=
"d2"
yfiles.type=
"portgeometry"
/>
<key
for=
"port"
id=
"d3"
yfiles.type=
"portuserdata"
/>
<key
attr.name=
"url"
attr.type=
"string"
for=
"node"
id=
"d4"
/>
<key
attr.name=
"description"
attr.type=
"string"
for=
"node"
id=
"d5"
/>
<key
for=
"node"
id=
"d6"
yfiles.type=
"nodegraphics"
/>
<key
for=
"graphml"
id=
"d7"
yfiles.type=
"resources"
/>
<key
attr.name=
"url"
attr.type=
"string"
for=
"edge"
id=
"d8"
/>
<key
attr.name=
"description"
attr.type=
"string"
for=
"edge"
id=
"d9"
/>
<key
for=
"edge"
id=
"d10"
yfiles.type=
"edgegraphics"
/>
<graph
edgedefault=
"directed"
id=
"G"
>
<data
key=
"d0"
/>
<node
id=
"n0"
yfiles.foldertype=
"group"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ProxyAutoBoundsNode>
<y:Realizers
active=
"0"
>
<y:GroupNode>
<y:Geometry
height=
"408.666015625"
width=
"359.0"
x=
"31.0"
y=
"9.333984375"
/>
<y:Fill
color=
"#F5F5F5"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"dashed"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"right"
autoSizePolicy=
"node_width"
backgroundColor=
"#EBEBEB"
borderDistance=
"0.0"
fontFamily=
"Dialog"
fontSize=
"15"
fontStyle=
"plain"
hasLineColor=
"false"
height=
"21.666015625"
modelName=
"internal"
modelPosition=
"t"
textColor=
"#000000"
visible=
"true"
width=
"359.0"
x=
"0.0"
y=
"0.0"
>
Master
</y:NodeLabel>
<y:Shape
type=
"roundrectangle"
/>
<y:State
closed=
"false"
closedHeight=
"50.0"
closedWidth=
"50.0"
innerGraphDisplayEnabled=
"false"
/>
<y:Insets
bottom=
"15"
bottomF=
"15.0"
left=
"15"
leftF=
"15.0"
right=
"15"
rightF=
"15.0"
top=
"15"
topF=
"15.0"
/>
<y:BorderInsets
bottom=
"0"
bottomF=
"0.0"
left=
"0"
leftF=
"0.0"
right=
"0"
rightF=
"0.0"
top=
"0"
topF=
"0.0"
/>
</y:GroupNode>
<y:GroupNode>
<y:Geometry
height=
"50.0"
width=
"50.0"
x=
"0.0"
y=
"60.0"
/>
<y:Fill
color=
"#F5F5F5"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"dashed"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"right"
autoSizePolicy=
"node_width"
backgroundColor=
"#EBEBEB"
borderDistance=
"0.0"
fontFamily=
"Dialog"
fontSize=
"15"
fontStyle=
"plain"
hasLineColor=
"false"
height=
"21.666015625"
modelName=
"internal"
modelPosition=
"t"
textColor=
"#000000"
visible=
"true"
width=
"63.75830078125"
x=
"-6.879150390625"
y=
"0.0"
>
Folder 1
</y:NodeLabel>
<y:Shape
type=
"roundrectangle"
/>
<y:State
closed=
"true"
closedHeight=
"50.0"
closedWidth=
"50.0"
innerGraphDisplayEnabled=
"false"
/>
<y:Insets
bottom=
"5"
bottomF=
"5.0"
left=
"5"
leftF=
"5.0"
right=
"5"
rightF=
"5.0"
top=
"5"
topF=
"5.0"
/>
<y:BorderInsets
bottom=
"0"
bottomF=
"0.0"
left=
"0"
leftF=
"0.0"
right=
"0"
rightF=
"0.0"
top=
"0"
topF=
"0.0"
/>
</y:GroupNode>
</y:Realizers>
</y:ProxyAutoBoundsNode>
</data>
<graph
edgedefault=
"directed"
id=
"n0:"
>
<node
id=
"n0::n0"
>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ShapeNode>
<y:Geometry
height=
"325.0"
width=
"155.0"
x=
"220.0"
y=
"78.0"
/>
<y:Fill
color=
"#C0C0C0"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"12"
fontStyle=
"plain"
hasBackgroundColor=
"false"
hasLineColor=
"false"
hasText=
"false"
height=
"4.0"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"4.0"
x=
"75.5"
y=
"160.5"
>
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"0.0"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape
type=
"rectangle"
/>
</y:ShapeNode>
</data>
</node>
<node
id=
"n0::n1"
>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ShapeNode>
<y:Geometry
height=
"326.0"
width=
"155.0"
x=
"46.0"
y=
"77.0"
/>
<y:Fill
color=
"#C0C0C0"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"12"
fontStyle=
"plain"
hasBackgroundColor=
"false"
hasLineColor=
"false"
hasText=
"false"
height=
"4.0"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"4.0"
x=
"75.5"
y=
"161.0"
>
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"0.0"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape
type=
"rectangle"
/>
</y:ShapeNode>
</data>
</node>
<node
id=
"n0::n2"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"82.0"
width=
"132.0"
x=
"58.0"
y=
"91.5"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"55.9365234375"
x=
"38.03173828125"
y=
"3.0"
>
Context
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel/>
<y:MethodLabel>
call(func, *args)
send(msg)
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node
id=
"n0::n3"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"82.0"
width=
"132.0"
x=
"231.5"
y=
"92.0"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"48.154296875"
x=
"41.9228515625"
y=
"3.0"
>
Broker
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel/>
<y:MethodLabel>
start_transmit(strm)
stop_transmit(strm)
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node
id=
"n0::n4"
>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ShapeNode>
<y:Geometry
height=
"30.0"
width=
"155.0"
x=
"220.0"
y=
"47.0"
/>
<y:Fill
hasColor=
"false"
transparent=
"false"
/>
<y:BorderStyle
hasColor=
"false"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"12"
fontStyle=
"plain"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"18.1328125"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"86.400390625"
x=
"34.2998046875"
y=
"5.93359375"
>
Broker Thread
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"0.0"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape
type=
"rectangle"
/>
</y:ShapeNode>
</data>
</node>
<node
id=
"n0::n5"
>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ShapeNode>
<y:Geometry
height=
"30.0"
width=
"155.0"
x=
"46.0"
y=
"46.0"
/>
<y:Fill
hasColor=
"false"
transparent=
"false"
/>
<y:BorderStyle
hasColor=
"false"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"12"
fontStyle=
"plain"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"18.1328125"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"80.751953125"
x=
"37.1240234375"
y=
"5.93359375"
>
User Threads
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"0.0"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape
type=
"rectangle"
/>
</y:ShapeNode>
</data>
</node>
<node
id=
"n0::n6"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"104.0"
width=
"132.0"
x=
"150.0"
y=
"188.5"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"48.60498046875"
x=
"41.697509765625"
y=
"3.0"
>
Router
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel>
handlers[]
</y:AttributeLabel>
<y:MethodLabel>
ssh(hostname=...)
sudo(username=...)
route(msg)
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node
id=
"n0::n7"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"82.0"
width=
"132.0"
x=
"231.5"
y=
"308.0"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"50.47119140625"
x=
"40.764404296875"
y=
"3.0"
>
Stream
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel/>
<y:MethodLabel>
send()
on_transmit()
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node
id=
"n0::n8"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"82.0"
width=
"132.0"
x=
"57.5"
y=
"307.5"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"58.361328125"
x=
"36.8193359375"
y=
"3.0"
>
Channel
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel/>
<y:MethodLabel>
put()
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
</graph>
</node>
<node
id=
"n1"
yfiles.foldertype=
"group"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ProxyAutoBoundsNode>
<y:Realizers
active=
"0"
>
<y:GroupNode>
<y:Geometry
height=
"408.666015625"
width=
"359.0"
x=
"471.25"
y=
"9.333984375"
/>
<y:Fill
color=
"#F5F5F5"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"dashed"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"right"
autoSizePolicy=
"node_width"
backgroundColor=
"#EBEBEB"
borderDistance=
"0.0"
fontFamily=
"Dialog"
fontSize=
"15"
fontStyle=
"plain"
hasLineColor=
"false"
height=
"21.666015625"
modelName=
"internal"
modelPosition=
"t"
textColor=
"#000000"
visible=
"true"
width=
"359.0"
x=
"0.0"
y=
"0.0"
>
Child
</y:NodeLabel>
<y:Shape
type=
"roundrectangle"
/>
<y:State
closed=
"false"
closedHeight=
"50.0"
closedWidth=
"50.0"
innerGraphDisplayEnabled=
"false"
/>
<y:Insets
bottom=
"15"
bottomF=
"15.0"
left=
"15"
leftF=
"15.0"
right=
"15"
rightF=
"15.0"
top=
"15"
topF=
"15.0"
/>
<y:BorderInsets
bottom=
"0"
bottomF=
"0.0"
left=
"1"
leftF=
"0.5"
right=
"0"
rightF=
"0.0"
top=
"1"
topF=
"1.0"
/>
</y:GroupNode>
<y:GroupNode>
<y:Geometry
height=
"50.0"
width=
"50.0"
x=
"0.0"
y=
"60.0"
/>
<y:Fill
color=
"#F5F5F5"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"dashed"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"right"
autoSizePolicy=
"node_width"
backgroundColor=
"#EBEBEB"
borderDistance=
"0.0"
fontFamily=
"Dialog"
fontSize=
"15"
fontStyle=
"plain"
hasLineColor=
"false"
height=
"21.666015625"
modelName=
"internal"
modelPosition=
"t"
textColor=
"#000000"
visible=
"true"
width=
"63.75830078125"
x=
"-6.879150390625"
y=
"0.0"
>
Folder 2
</y:NodeLabel>
<y:Shape
type=
"roundrectangle"
/>
<y:State
closed=
"true"
closedHeight=
"50.0"
closedWidth=
"50.0"
innerGraphDisplayEnabled=
"false"
/>
<y:Insets
bottom=
"5"
bottomF=
"5.0"
left=
"5"
leftF=
"5.0"
right=
"5"
rightF=
"5.0"
top=
"5"
topF=
"5.0"
/>
<y:BorderInsets
bottom=
"0"
bottomF=
"0.0"
left=
"0"
leftF=
"0.0"
right=
"0"
rightF=
"0.0"
top=
"0"
topF=
"0.0"
/>
</y:GroupNode>
</y:Realizers>
</y:ProxyAutoBoundsNode>
</data>
<graph
edgedefault=
"directed"
id=
"n1:"
>
<node
id=
"n1::n0"
>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ShapeNode>
<y:Geometry
height=
"325.0"
width=
"155.0"
x=
"486.75"
y=
"78.0"
/>
<y:Fill
color=
"#C0C0C0"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"12"
fontStyle=
"plain"
hasBackgroundColor=
"false"
hasLineColor=
"false"
hasText=
"false"
height=
"4.0"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"4.0"
x=
"75.5"
y=
"160.5"
>
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"0.0"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape
type=
"rectangle"
/>
</y:ShapeNode>
</data>
</node>
<node
id=
"n1::n1"
>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ShapeNode>
<y:Geometry
height=
"324.0"
width=
"155.0"
x=
"660.25"
y=
"79.0"
/>
<y:Fill
color=
"#C0C0C0"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"12"
fontStyle=
"plain"
hasBackgroundColor=
"false"
hasLineColor=
"false"
hasText=
"false"
height=
"4.0"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"4.0"
x=
"75.5"
y=
"160.0"
>
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"0.0"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape
type=
"rectangle"
/>
</y:ShapeNode>
</data>
</node>
<node
id=
"n1::n2"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"82.0"
width=
"132.0"
x=
"498.25"
y=
"92.0"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"48.154296875"
x=
"41.9228515625"
y=
"3.0"
>
Broker
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel/>
<y:MethodLabel>
start_receive(strm)
stop_receive(strm)
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node
id=
"n1::n3"
>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ShapeNode>
<y:Geometry
height=
"30.0"
width=
"155.0"
x=
"486.75"
y=
"47.0"
/>
<y:Fill
hasColor=
"false"
transparent=
"false"
/>
<y:BorderStyle
hasColor=
"false"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"12"
fontStyle=
"plain"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"18.1328125"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"86.400390625"
x=
"34.2998046875"
y=
"5.93359375"
>
Broker Thread
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"0.0"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape
type=
"rectangle"
/>
</y:ShapeNode>
</data>
</node>
<node
id=
"n1::n4"
>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ShapeNode>
<y:Geometry
height=
"30.0"
width=
"155.0"
x=
"660.25"
y=
"48.0"
/>
<y:Fill
hasColor=
"false"
transparent=
"false"
/>
<y:BorderStyle
hasColor=
"false"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"12"
fontStyle=
"plain"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"18.1328125"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"76.486328125"
x=
"39.2568359375"
y=
"5.93359375"
>
Main Thread
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"0.0"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape
type=
"rectangle"
/>
</y:ShapeNode>
</data>
</node>
<node
id=
"n1::n5"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"82.0"
width=
"132.0"
x=
"590.25"
y=
"188.5"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"48.60498046875"
x=
"41.697509765625"
y=
"3.0"
>
Router
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel>
handlers[]
</y:AttributeLabel>
<y:MethodLabel>
route(msg)
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node
id=
"n1::n6"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"82.0"
width=
"132.0"
x=
"498.25"
y=
"308.0"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"50.47119140625"
x=
"40.764404296875"
y=
"3.0"
>
Stream
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel/>
<y:MethodLabel>
send()
on_receive()
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node
id=
"n1::n7"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"82.0"
width=
"132.0"
x=
"671.75"
y=
"93.25"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"110.6279296875"
x=
"10.68603515625"
y=
"3.0"
>
ExternalContext
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel/>
<y:MethodLabel>
_dispatch_calls()
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
<node
id=
"n1::n8"
>
<data
key=
"d4"
/>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:UMLClassNode>
<y:Geometry
height=
"82.0"
width=
"132.0"
x=
"671.75"
y=
"307.5"
/>
<y:Fill
color=
"#FFCC00"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"13"
fontStyle=
"bold"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"19.310546875"
modelName=
"custom"
textColor=
"#000000"
visible=
"true"
width=
"58.361328125"
x=
"36.8193359375"
y=
"3.0"
>
Channel
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"-0.03703090122767855"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:UML
clipContent=
"true"
constraint=
""
omitDetails=
"false"
stereotype=
""
use3DEffect=
"true"
>
<y:AttributeLabel>
CALL_FUNCTION
</y:AttributeLabel>
<y:MethodLabel>
get()
</y:MethodLabel>
</y:UML>
</y:UMLClassNode>
</data>
</node>
</graph>
</node>
<node
id=
"n2"
>
<data
key=
"d5"
/>
<data
key=
"d6"
>
<y:ShapeNode>
<y:Geometry
height=
"82.0"
width=
"40.0"
x=
"410.625"
y=
"308.0"
/>
<y:Fill
color=
"#33CCCC"
transparent=
"false"
/>
<y:BorderStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:NodeLabel
alignment=
"center"
autoSizePolicy=
"content"
fontFamily=
"Dialog"
fontSize=
"12"
fontStyle=
"plain"
hasBackgroundColor=
"false"
hasLineColor=
"false"
height=
"18.1328125"
modelName=
"custom"
rotationAngle=
"270.0"
textColor=
"#000000"
visible=
"true"
width=
"52.580078125"
x=
"10.93359375"
y=
"14.7099609375"
>
Network
<y:LabelModel>
<y:SmartNodeLabelModel
distance=
"4.0"
/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter
labelRatioX=
"0.0"
labelRatioY=
"0.0"
nodeRatioX=
"0.0"
nodeRatioY=
"0.0"
offsetX=
"0.0"
offsetY=
"0.0"
upX=
"0.0"
upY=
"-1.0"
/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape
type=
"rectangle"
/>
</y:ShapeNode>
</data>
</node>
<edge
id=
"n0::e0"
source=
"n0::n2"
target=
"n0::n6"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n0::e1"
source=
"n0::n6"
target=
"n0::n3"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n0::e2"
source=
"n0::n3"
target=
"n0::n7"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n0::e3"
source=
"n0::n7"
target=
"n0::n6"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n1::e0"
source=
"n1::n5"
target=
"n1::n2"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n1::e1"
source=
"n1::n2"
target=
"n1::n6"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n1::e2"
source=
"n1::n6"
target=
"n1::n5"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n1::e3"
source=
"n1::n0"
target=
"n1::n5"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"none"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"e0"
source=
"n2"
target=
"n0::n7"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"-19.993890966244177"
sy=
"24.690749004906024"
tx=
"66.02343749999994"
ty=
"24.690749004906024"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"e1"
source=
"n1::n6"
target=
"n2"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"-65.97656250000006"
sy=
"24.0"
tx=
"20.01418551326256"
ty=
"24.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"e2"
source=
"n1::n6"
target=
"n2"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"-65.99218750000006"
sy=
"-24.99128644254978"
tx=
"20.03046259684592"
ty=
"-24.99128644254978"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"standard"
target=
"none"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"e3"
source=
"n2"
target=
"n0::n7"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"-19.993750000000052"
sy=
"-22.79645270270271"
tx=
"66.01034628378375"
ty=
"-22.79645270270271"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"standard"
target=
"none"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n0::e4"
source=
"n0::n8"
target=
"n0::n2"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n0::e5"
source=
"n0::n7"
target=
"n0::n3"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n1::e4"
source=
"n1::n6"
target=
"n1::n2"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"-9.999999999999972"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n1::e5"
source=
"n1::n5"
target=
"n1::n8"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
<edge
id=
"n1::e6"
source=
"n1::n8"
target=
"n1::n7"
>
<data
key=
"d9"
/>
<data
key=
"d10"
>
<y:PolyLineEdge>
<y:Path
sx=
"0.0"
sy=
"0.0"
tx=
"0.0"
ty=
"0.0"
/>
<y:LineStyle
color=
"#000000"
type=
"line"
width=
"1.0"
/>
<y:Arrows
source=
"none"
target=
"standard"
/>
<y:BendStyle
smoothed=
"false"
/>
</y:PolyLineEdge>
</data>
</edge>
</graph>
<data
key=
"d7"
>
<y:Resources/>
</data>
</graphml>
docs/images/layout.png
0 → 100644
View file @
dcc45bc7
26.1 KB
docs/images/radiation.png
0 → 100644
View file @
dcc45bc7
14.9 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment