From 063f3277bb02061d0c0e33ad08c264f8c3a99713 Mon Sep 17 00:00:00 2001 From: deeaitch Date: Mon, 27 Jul 2026 20:09:01 -0400 Subject: [PATCH] Ref #11 added some UML --- .../example/uml/iteration.planuml | 25 +++++++++++ .../example/uml/loop.plantuml | 13 ++++++ .../example/uml/loop.png | Bin 0 -> 13052 bytes .../example/uml/ownership transfer.plantuml | 17 ++++++++ .../example/uml/ownership transfer.png | Bin 0 -> 11230 bytes .../example/uml/queue_splitting.plantuml | 39 ++++++++++++++++++ .../example/uml/queue_splitting.png | Bin 0 -> 23610 bytes .../example/uml/sequence-diagram.plantuml | 20 +++++++++ .../example/uml/sequence-diagram.png | Bin 0 -> 13803 bytes 9 files changed, 114 insertions(+) create mode 100644 analysis/05-Message_Queue_Partitioning/example/uml/iteration.planuml create mode 100644 analysis/05-Message_Queue_Partitioning/example/uml/loop.plantuml create mode 100644 analysis/05-Message_Queue_Partitioning/example/uml/loop.png create mode 100644 analysis/05-Message_Queue_Partitioning/example/uml/ownership transfer.plantuml create mode 100644 analysis/05-Message_Queue_Partitioning/example/uml/ownership transfer.png create mode 100644 analysis/05-Message_Queue_Partitioning/example/uml/queue_splitting.plantuml create mode 100644 analysis/05-Message_Queue_Partitioning/example/uml/queue_splitting.png create mode 100644 analysis/05-Message_Queue_Partitioning/example/uml/sequence-diagram.plantuml create mode 100644 analysis/05-Message_Queue_Partitioning/example/uml/sequence-diagram.png diff --git a/analysis/05-Message_Queue_Partitioning/example/uml/iteration.planuml b/analysis/05-Message_Queue_Partitioning/example/uml/iteration.planuml new file mode 100644 index 0000000..860f6f2 --- /dev/null +++ b/analysis/05-Message_Queue_Partitioning/example/uml/iteration.planuml @@ -0,0 +1,25 @@ +@startuml + +rectangle "Traversal" + +() previous +() current +() next + +previous --> current +current --> next + +note right + +save next + +detach current + +append to +destination queue + +continue with next + +end note + +@enduml diff --git a/analysis/05-Message_Queue_Partitioning/example/uml/loop.plantuml b/analysis/05-Message_Queue_Partitioning/example/uml/loop.plantuml new file mode 100644 index 0000000..1c5f70e --- /dev/null +++ b/analysis/05-Message_Queue_Partitioning/example/uml/loop.plantuml @@ -0,0 +1,13 @@ +@startuml + +[*] --> Outgoing + +Outgoing --> Sent : success + +Outgoing --> Retry : retry == true + +Retry --> Outgoing : rescheduled + +Sent --> [*] + +@enduml diff --git a/analysis/05-Message_Queue_Partitioning/example/uml/loop.png b/analysis/05-Message_Queue_Partitioning/example/uml/loop.png new file mode 100644 index 0000000000000000000000000000000000000000..ea40aaa923288995b32db9b625e38607dc5cce92 GIT binary patch literal 13052 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 R{?+nIT2euxR9qkOzW}4#J7NF; literal 0 HcmV?d00001 diff --git a/analysis/05-Message_Queue_Partitioning/example/uml/ownership transfer.plantuml b/analysis/05-Message_Queue_Partitioning/example/uml/ownership transfer.plantuml new file mode 100644 index 0000000..730dc9a --- /dev/null +++ b/analysis/05-Message_Queue_Partitioning/example/uml/ownership transfer.plantuml @@ -0,0 +1,17 @@ +@startuml + +rectangle "Outgoing Queue" as Q1 +rectangle "Ready Queue" as Q2 +rectangle "Retry Queue" as Q3 + +Q1 --> Q2 : move node +Q1 --> Q3 : move node + +note bottom + +Every message belongs +to exactly one queue. + +end note + +@enduml diff --git a/analysis/05-Message_Queue_Partitioning/example/uml/ownership transfer.png b/analysis/05-Message_Queue_Partitioning/example/uml/ownership transfer.png new file mode 100644 index 0000000000000000000000000000000000000000..bf81d2cb98052ee1ef2f2081c4cca1475c6191b0 GIT binary patch literal 11230 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 E09BOtQ~&?~ literal 0 HcmV?d00001 diff --git a/analysis/05-Message_Queue_Partitioning/example/uml/queue_splitting.plantuml b/analysis/05-Message_Queue_Partitioning/example/uml/queue_splitting.plantuml new file mode 100644 index 0000000..4eebcf7 --- /dev/null +++ b/analysis/05-Message_Queue_Partitioning/example/uml/queue_splitting.plantuml @@ -0,0 +1,39 @@ +@startuml + +left to right direction +skinparam linetype ortho +skinparam shadowing false + +package "Before Partition" { + rectangle "A\nretry = false" as A + rectangle "B\nretry = true" as B + rectangle "C\nretry = false" as C + rectangle "D\nretry = true" as D + + A --> B : next + B --> C : next + C --> D : next +} + +package "After Partition" { + package "Ready Queue" { + rectangle "A" as ReadyA + rectangle "C" as ReadyC + + ReadyA --> ReadyC : next + } + + package "Retry Queue" { + rectangle "B" as RetryB + rectangle "D" as RetryD + + RetryB --> RetryD : next + } +} + +A ..> ReadyA : move +B ..> RetryB : move +C ..> ReadyC : move +D ..> RetryD : move + +@enduml diff --git a/analysis/05-Message_Queue_Partitioning/example/uml/queue_splitting.png b/analysis/05-Message_Queue_Partitioning/example/uml/queue_splitting.png new file mode 100644 index 0000000000000000000000000000000000000000..63987039a31b599b1ecadddcf635cb5772394430 GIT binary patch literal 23610 zcmdtKcRba9|37}3-jXyaLdgiBQpCZjB%vrH*_9PS_I9+0hOA^9vN=}vrjqQvviIJ5 zpYwg3L#5u=b^WgI_xgN(-_Py){^#9s&g=DDk9og89#7|+lA`3hsCOX{2y(G&SELb$ zZFUI6*6n|7g}*Q)R>>d`%3H*)T#~g^9bF@{m95Xg;|IjA6_J15PX0n#iSJ@PqJ);c zB%5Ax8_Ul|I6Bdm2VT{>A*;Bt9;m+VdF`jGusK5yN+ z_1&X9mLxW`hWJ zXeEV@caB-W5sb{Mn3|L#Bjzw?!CY;f@X9c4#R_N_S09lFBf+YyVtU&9&S zD`c8Rt(ESobA)+Kp7%mZh>Pd0oe;PZnw)%&n|mfMYdjIH@VNOcatk6iHJI6=1U*Kw z*JsPNoymHQ6}eQATN)avBQL>|3B1YKO_Fx%WCR#w&>J9bPDBF#rXN?|1iJ**}_lNjbM^$Xg} z*I6aE_g4mTN!iq6<>t42N^>Kun3B_ij^8v=%!64$LBZIxF7noAr}69=$tG63952e)p` zW@2n?JvW@9RZeZD)>NBeGGI2+AeMezLIP>j{cP@0y|(cH8CUkP7C&CY+dJx|806zs z1uZ8#O)3TD1H=m7&{A8%xuwQtle@d`M?I<*q0-dSG9Ri5i-{@YXR}@y=cr_~q}c015S5fi877^d9w*{c z8dbCU-YIGHRHAW7%_yVpuQL@$srh7`+Hf=;r~d7g+g&!^mJ~e}-awmiJ|FG}RmYlS zWM%7;v@7fCWJzBRt2;906qmQQw%(3a6kF?bipH6bul9OK$@0r)nDm$V5Ki(be% ze)&~D9)0W{)(ckCy;UsgOcDbjiGs$x*P0C4v#rt$+87H;=A+|tu>pS9CB($s1lYQ! z{Y@&|ggcfhEVfo=ee-0M(fAUllJ&%5D-ZD~>V1(+V_^{y5~>2$vysa^1@yQ{r-o{y zo^Qo;BaJ1f=C-zorP1=FQcge_ z^XS1Q5DL&wb}hbv3agp^s5_LS;eG~KA&>TUn+d`5wco7O+^)34IZROHEf(b3t<(j1 zt6E2?7rx=+AonL2*=$=?h7hExa6cUWGh?HC&85?J0_pOjYJ}oU)(gb*;RqL zd^zHZl$Xq7#dW3gMdGJi(TprCr4{qqk*LAZ_M9x=yQP?XM{*CpytOgI`f_p_o}%*b z8-6eYnK3@&-lDF2r)c3CzZ>bTOWiNIO6=$2FrZhdy7eU`Z-RE{OMT-h?24S*R?*p! zq-MX=7bJqs@2&9R)-I83S$XYncU?34D@5t-&RsBe=E_?=8|C;=)~UC`W+F%4pue|w zcBFA4cV*l|P}pgYmtaOlhP<+o2nfJgZf;OE6~xq zCs0=hjA?gU; z&GvQcP_PG!RDWOJ>m%IX>=BWd2=YpuQL6&mq~DgAV#js!DbckUM`UT0y+5v2IX!K> zvW4IwC;8xSsSleN)G9$rnkf*3L#T8^sx*R*f`|FOu$A~14%O^CYqkbEl+W5OPQH5e z3Z%A);@ELnS=sOL!7qp+!|cpWdhzS+!>h)`7pE{uyepDcl$K81Χ(8pG=k4z7L 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 literal 0 HcmV?d00001 diff --git a/analysis/05-Message_Queue_Partitioning/example/uml/sequence-diagram.plantuml b/analysis/05-Message_Queue_Partitioning/example/uml/sequence-diagram.plantuml new file mode 100644 index 0000000..ad64293 --- /dev/null +++ b/analysis/05-Message_Queue_Partitioning/example/uml/sequence-diagram.plantuml @@ -0,0 +1,20 @@ +@startuml + +participant Queue +participant Algorithm +participant Ready +participant Retry + +Queue -> Algorithm : get next node + +alt retry == false + +Algorithm -> Ready : append(node) + +else retry == true + +Algorithm -> Retry : append(node) + +end + +@enduml diff --git a/analysis/05-Message_Queue_Partitioning/example/uml/sequence-diagram.png b/analysis/05-Message_Queue_Partitioning/example/uml/sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..f549b7a10298a141d27a77a444b778991681c23e GIT binary patch literal 13803 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 KQYfV3^FIJU;|MJP literal 0 HcmV?d00001