From f330e61a05056fcf7af38329e74156e3485177f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Endre=20S=C3=A1ndor=20Varga?= Date: Thu, 9 Jul 2015 17:22:18 +0200 Subject: [PATCH 1/2] +doc #17337: Document composability and modularity --- .../rst/images/compose_attributes.png | Bin 0 -> 27714 bytes .../rst/images/compose_composites.png | Bin 0 -> 24672 bytes akka-docs-dev/rst/images/compose_graph.png | Bin 0 -> 13782 bytes .../rst/images/compose_graph_flow.png | Bin 0 -> 10501 bytes .../rst/images/compose_graph_partial.png | Bin 0 -> 11703 bytes .../rst/images/compose_graph_shape.png | Bin 0 -> 15571 bytes akka-docs-dev/rst/images/compose_mat.png | Bin 0 -> 20216 bytes .../rst/images/compose_nested_flow.png | Bin 0 -> 9632 bytes .../rst/images/compose_nested_flow_opaque.png | Bin 0 -> 7703 bytes akka-docs-dev/rst/images/compose_shapes.png | Bin 0 -> 9603 bytes akka-docs-dev/rst/images/composition.png | Bin 0 -> 62480 bytes akka-docs-dev/rst/images/composition.svg | 6771 +++++++++++++++++ akka-docs-dev/rst/java/stream-customize.rst | 4 +- .../code/docs/stream/CompositionDocSpec.scala | 241 + .../rst/scala/stream-composition.rst | 312 + akka-docs-dev/rst/scala/stream-customize.rst | 4 +- .../rst/scala/stream-flows-and-basics.rst | 2 + akka-docs-dev/rst/scala/stream-index.rst | 1 + 18 files changed, 7331 insertions(+), 4 deletions(-) create mode 100644 akka-docs-dev/rst/images/compose_attributes.png create mode 100644 akka-docs-dev/rst/images/compose_composites.png create mode 100644 akka-docs-dev/rst/images/compose_graph.png create mode 100644 akka-docs-dev/rst/images/compose_graph_flow.png create mode 100644 akka-docs-dev/rst/images/compose_graph_partial.png create mode 100644 akka-docs-dev/rst/images/compose_graph_shape.png create mode 100644 akka-docs-dev/rst/images/compose_mat.png create mode 100644 akka-docs-dev/rst/images/compose_nested_flow.png create mode 100644 akka-docs-dev/rst/images/compose_nested_flow_opaque.png create mode 100644 akka-docs-dev/rst/images/compose_shapes.png create mode 100644 akka-docs-dev/rst/images/composition.png create mode 100644 akka-docs-dev/rst/images/composition.svg create mode 100644 akka-docs-dev/rst/scala/code/docs/stream/CompositionDocSpec.scala create mode 100644 akka-docs-dev/rst/scala/stream-composition.rst diff --git a/akka-docs-dev/rst/images/compose_attributes.png b/akka-docs-dev/rst/images/compose_attributes.png new file mode 100644 index 0000000000000000000000000000000000000000..3ee9db5e8eb469f25f4ac4ba4d15dc36a2544de0 GIT binary patch literal 27714 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

y(83F!Ma$>srg;kr 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 literal 0 HcmV?d00001 diff --git a/akka-docs-dev/rst/images/compose_composites.png b/akka-docs-dev/rst/images/compose_composites.png new file mode 100644 index 0000000000000000000000000000000000000000..0783862a5de410fb3dddb272250324ef25ee6037 GIT binary patch literal 24672 zcmeAS@N?(olHy`uVBq!ia0y~yV4TOmz}U^f#=yYvJ^hP10|Ns~v6E*A2L}g74M$1` z0|NtRfk$L90|TEL2s18vulk39fkCpwHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^# z_B$IX1_lKNPZ!6KiaBrQmRE?n-fn-d{^j0OrH&w>sz3)#vk(DpSHVD+SzW9GQ1c!Ku^GHelwDM~F9`g&E3w(sp>P_56a(9g{GOlM0w1-! z+#FrF7!No6a^NwLmB{F^6b(B3$H8S5AQ1GXh%Q{cL6s1dy zH`r?4ZTqYAsW8DObjp|hjwfu>81|*7ieF&=VbPMN+AiY|sL)-!pToy9EoNq;)q$%A z{#i&n_$t`koR+3w#C*Ha`M~1?p*NbYF?^Rw_TZPEAgXO;I(PTH-EF5%c4*5Nh}~eB zapgQ6D zPf>O`Hm{09&zWZ>x-Me+AQ52K=R32}I=0I6@y4H43wpoXEZEX*E+4=^+_UHSB1$&KoFzy4*cVG=1kzS%lD?o-R(OU3s2#s9W$$nPoN_1J&s%+q#1Uoz==glGawz|o!Ry9|!seShAe?D_XzZT({w_RMPz zcU{nYZuh+UU!&B!8!iu6wq?FIxp3j<^YZhP&G$|`r{7)uZ2L~5;|#HL?hBubWv&p8 z{&tk1z46z)*B0%%tIsifZp`_3XR-=6{{-G>v#Pg$?bk?@mb^>Tdn53C-~FBOtY&Ri z{7V$xABns0xX^~H;@kdm^WU-$j33x+lNEmx-F{H)KyZWnoa$A-n~yUeZXWe4<6P-S&WEd2xN|$Db@|y_+BMJ#bGj{pP!L0k^rp@3IH0xAGqCocDWj zIpcTc*qB}Gj}`}SV*0=1^LFNZ#_}VapVxf;FQ~o9eNOJohB@cn+xq|bdO&IW{X0MP z%gnAEympOe1Bdn-_r^ZGKO#Aye-#%Pe_L3sePyQm_S4nO|4LcY_UNY{Xx8)J->I7- zU;b|Tod4!G4*gMn!1cy^Vc}C}**DxzEEDE&#~*$i&lH_(#r@~iA9t(&?Xgwwt-r68 zi+;5;{fnUgP62J3bAM$w+$@&Wom>BUv2P7+2i~5K5V&Nf8}RtX<~h8{i^kxZ^Z7*p3E(-ZFBBz zb@B=s^~?LZ)-Drctz+U-Ex2o*N*{voZe^o{qec+GZ|vufAdd@kD33>$v72d`G4j`4NB+c&32m0K52I=WAuiQ zW6d2YWxMzFZCEPz{_2fqOD4@rE@tR4JiamCF}ugGeeQj^@3T(|*Y$F9n|*G`P1>zt zn|vlRXJO1aiDHo-2U=&c%ZN_=m?z?u#D+Z+dON-TK0YEKX+Kad)#99jDLImxxabeez+f> z{4VbNKe=>gG4c2J<@VR#&6i6)l zPv)DOeaD5>_zSMYNHA8MD3*DUopbhGWKQuvmmJHFEZZat3Waj~C$}UT^WQkc!yvem z$wE&_zUX1U&Rfg(S>LNK6zja}wVmj3tJ3y&>z(%(SuSZm^*$|enRP|S+C-g0*K%&f zDajV@w-c;6B@wK1uI$MoVVAB>4`acTX+1YHduDd5jgvomZ@F;Z=UWo@Z9n!(?O~do z_-NDV*vSXY+~ZzuTsTWQ_r>Pj?lxub|K?BW5;A$V>wdfIk?%n_r6m}i9Ga%vB%9US zG3B7$Yw6$_?|SF`eRV)iJuADhE3d;mM&okL%i8>&os7}n_H@>!Wgiv(Z<%wtw_o>$ zBe%UovfY7e4V##D2Uo~uHy%<7I=D0Y_{Q(q-){?7uNP0u_Sk!8>yH+zyMk?R7e_GP z(O1gvI8k~-`t|D{QA~eWZ8VfpU6z<_oBKsP`OHRz)>UGhZvt|c^ zm4X6X6Q~Q%=pZ81rosw7fyiEC@xw(FE<0+*} zPA-QUZ{7&h$=;ZB$IsYEWZKaO{ zK6G~QJa&rz_&{XYZ5Nk&q7&b5d}Mf0R=(}Edg=V;J>74u=cy>oZQSp=#D3eJopQhT z{FC$lbGuP!o#|371F7Fh7S1lal79EM?@HE8RQXnSMsVW78_TvZ>)G}gMsK*wRoO7V z*Kqm9t#fP+tPxoz8x?cfkM+&%?d$cG*(6?NZr>w*+pOx`&-}x@?oXWL{geHFIN#vc ztIfN=;qf33giCh2cGd!6C0&BOSzRsH<-tP}y+g7vff9q@g%f8zK^4?j#ZqMzC-^7F^1rp>%D zamoEhl8<xW2);3Rfdnoyk)8wGpVRy#)Oh;|%^b>xU zUQgt%jjt@}_uf9ISiE>!9`n1h<6664-{`3|?B8C`dV9b1{cygckL`IY4nJPkE<0iC z(b&sd3lG`9e)PF_#@iR`)+em^|9eW#zP=oVZ_byBZtQF8zQ=MW{7-2t3{@aKY%_d%e0F&hLKQ z^!EFTuD9y99`&Uk3wv2Em0VVFDYxP6oEW+1R{suMUM?iBG)eaMkuaItH+NX|)$2`9 zi_4k)Zl1+I(+y2K7;f9lI4QB&&4nx3_>)!g8AbmeHV1rfF!FalJ`yT2+w(i)>6-7( zfqLS1K5vnFk=9eGe&w6SNq4=#cgx}y`Bn57nzPy#x&~fS)v}RnU()l!gLhfsLVmYE z5mikWrt1YC8RS%Dg(gY$FVg5L`Y9xq#Vq0)IOR0AsGMt{i0XzyLPtvpKnrrW~bI*yk*!na1dwg?C zHyFEUcTL*0r#1G3!Qu^z!~5;dI_0(q#kBFshluRnF!z2%YkKW^xmrK=V=AtJLP;+^ zIJyh*FV&C~m%X}7qiYe1C|-vLJ`5Cb4Q%T2o4HuSYtxOL#o_-}uh%=;DXh-j<*_^9 z_GF%GQpwlaZgDUOX7WAZ-YWYqU{lD+n)5cdXU>>0L+9VT*(*MDoZwoJvPs8V`i#M` z627g1aV}5P7Zj~{>!DUJoxBRHw^BwzAj|sC(%SZIKMyM(y17SlmD7q`PtM)t?{~g> zwc5Mz%ZrJV4jcj57sq_5@2?d*VbIqbe__IssG&Ow4IR8 zVt%yH;N|am%S4MN^1V;?IaB#vda`1aj8W<-m(^iwopRkKMQ%>xjoy~SxmEJxr4@n7 zpPu`7yI!leto)R+>AY{zvH7;uW}@0*K4ne^(_UR!`Q^n$Te zm2YouIybZNI_0|UvHA1iFprFd!Id1Q&H$OU2pCh7bnMuhgzL;ofe5`hv~%Ly}ZS1 zo=xSYtF=6*mn2tBIW1kw1WIZP79Cnle8h2q(y35LNCmRisXT_Bi8U2!8&>Nm{rzk4 zb&FwIhka(}iOn}U?I(K$HthfZ@Amu@CodnLo_zD|^S=u};7vZW^9WO?N9}_$`$u~j z6P}-&TQ^HM>fAg_?gRJsR_A~D9Cyy>*cu_1 zC3A7Al2HlxgwQ$wkqA^dl`q>HQT(%Cz2`N`PxH5jV-xb)aRkK;QO zd@|SbDaV899~fdAKGn^eysqW>ot+VPPq6;@yrF6D{7x?Z0DH;8&Dq!W>is!2)6d;% z`gLOBVsj?*Uxlyg6t1?ob86gl%5{iRJIuxJFj2|XqVki<+uPgK!`H=3=c#^lgww5G zZtk5WTudgJms+$!SE)!5@X~%h0pY4eiTUhe)(w%!B`dkj5pJzLpSK4gJwnzr136{laag|R+ z=T$u7+?49Q<4??n1iRVWb9mZf8C9*Uq&7@Gz3=O_=q(u+nFKuz{>(5;esOtu|NfIH zOgkR;SxZ=zXk3peKC8-neO>JAwb9#u&32phaAx|vhppmq3mh7mINL0Xo_M@T*(VuQ zaj)jHZ{5$Q;{V?N|JT1RcK4@8-TITP%imQTes_Prz3QRQ`T-RuC#gO;Il0}jnXT~c z*6V5#73bzyzKp6+^PlI_&L>;(^XYWWhz$u%4<{+wxF5K-F74c$lM@u3Gp?ONR_%^8*zDNMw&(Y|-93`VZHb553UB9bKPqkK-Y0X?^O=gnOrz8t zZ@1m9_;S(x<@NRQu3aLX<^@Umk(tsDpPZb0WmRbRJlpC^TeHJArSJc8tKj9&EMe93 zb8~v6&HJ97p1wKrvf8Ps+Q(-YChs}x)_ABPmU%_Z&rdP+f4|y%zf&w@Q(uM&v8(+Ru)nT$nogw9g&&u>zTdC6=ePf3 zaCVmI;coSd{KZttwT zySpwfbY`Drl6fe9|6j2SCc8>sA3N47ZCU%v^Xc?> zkZUHZ`99jS`sQ)>HZi&Qsk?G+ZmRisRQ${w%gOrt|4ceHRr~YR@OW06y>l#!KmB^W zK7Pu@HXg}CD}$Fa%?s1e3|zzl3ig9dtU56}CVco%VE6OMWbZVS`kn9h{r>TG`~8gT z>tuDKw>|my`@R3>?s8Re!G*=o&*j|S)_ZEIcJOjP*+mdMeVRP z3&PjO+5G)-`A*&Mw`=0|T3tzFow8wrfn4pEz(tD|ffQ}OTPFSX_V)Di^K2Qt7e{PN zs`>G-T_N=udI)sf3#bi-RABh*KVV-HxXjGQAa*KJ*^qP&qluf zPoV?%vn>uwy{68vEKbXDTOGMs&Hm2^=L3(fYgL+bdYW!b`Q6ehYon*9&#P36 zH4i@KzAk2G#nY+bH@0L7KR-Wzxl=1w=CiXAE*W=sna(!LeRQw-{nEn6$80{GP=0e` zqw#%h@9&xP-TkG}y-d<2U8NVEC_*aMe2P0jC?2zyW0TN=N=uH@yV zR_phBCU4EY&ZhHkj%D$s<^J+!`S*OL=|rxG*r>$J#`ECK&CQJ7%DM$dMZ*oMzGO_( zi#@fg^ff41$=7}nJodvh$TalCEK}{fyGoO9Z_Ayc7dvZ~Y4#^qtEhKYE1#U7KYyWf z`=+|TRsVjy)(2&xCRXm6dzLOsGJ?$RJZSo{B7D7Ex0r6yg$0gZUR~{G^WI2 zZhfKBq$y>s-h7-oF*^(vyY()L-k!JT&!^Khzu#_W$Xt}br;>Vl+SAke`%`{?div$f z&B>*&ueIJ<67lKT+0zFanJb^oOwaflpnb}HifZ!R+S8%ou}6<|3P*0wljW5%`5>Fe zXX2G4QYplJVNIm*yPePF;;P@8-m7@r`()OvWhW=8a-X;P%+qiCO`_lKSH_!8J`mIhzxg{q21ZxAB4^r8f7~@?OK_zc(Aa>vqWs3m<-QadBryhl5K; zM+e6p*JX-*^7el3@9kX~yW8yR>+9dEdc7aj#!QQlIz3%~dEVV!d%j+aE_rc*aYNGd zi!%(9*+jL&QZ6oXy;J>u@4myG`#qN`x%bO0b?=wEQ}MXhB;!KEb#@+(rIss?y}P?R z^X@Lwwb9$3{d_)udGz)?M*rkjS5}6s2xz>zI(&1{(^D+%k;~K1&9y$hB5*M%AxCaX zN&NZg>BhS0OF#T*S>V*lC6NruvU9CUy+oy-otx|Z_0`pxMyXu(|9&VZAMZO`z`E41 z&EM{4%ZCpIW$*8u{q^eD=91Q zeB5VU@p9?(iuZfJ&oIpvtNi?occt$!2{oS?4iyy^_5c5xOPl2^D1U!XQcr%qRcY7t z`1-l8uC6YAyY;$|sHp2~vs}HOg)8^3iQhjjI)Crfe}8`)=iRZ`_v_Vao|*miKOVBL z3R`<>P2}bo=J|4q-TU{wczmg6YVjk1`5(^AwVs}LcURyN55c-$FPGm?TL`K+P2S2{ zmwf=0HCb1++IXeiR)?)+lB$ma1x3l*TT^GukXYt3)9LQ6Qf8_DH#etCnr4YOxAQ&S zcwA0dOH0dhv)U4KK3S_HtJm*4^?ZK4-+a5;if=d5lkH1*RJ+CXmql;SOF1>AbN&8* zvu*K-xwo@Or zNGIIhmTU9>&u14mH>0E@9J9>xN8USB5*sz^K4=XK;VajV>~`OG_2EA-Lx z`SocR7rFMxSQ;Jf^z-rINj~1Es-)CpoPKUY;bXU5uk5*DdJ{k<4HKw!s#>HOn1Se$GNeBf@Zn5T&C;A8qIkjV_nvBZ*MiI ze#_hQ(akLH&Wr^w4x|P=wk&+a(#*!2^ybFKlK1!Kp11q0bMd9jq|@K;*PmzRw{f_; zt2A6T@(^rMA{`6$BzmTZt)CVTPFXzVB|DC#i->^7gz7>BG1>Abo+T>Zz?as_)Y zZr0%CeyIl<7)7+hdgj;vvwZN;f4<$^Yipw~uMAdCN=lkxnC!OaA(QQ1&kZxJ%k|3d zRjPk|b@g$-{l5qO_WwG}V>YDUzqh~MeyVo(v*+{c_dWSP+t$78T~<-LfG)R=b=jK* zNk_YCKAlttVa_)1G~*hx4YF_4{pam@AwBJfN4|IUk);leOgT3F zlx5K^_H8~hvzO~f?fB6uFk86W@R@;u{mO^$bF2I#J?evhRsUM^&*0b@|6Y?GL+`(w z`bz2t{rIQGaqRwJl=WwC|4Z%TpkauYazu6RvG);G&c_&(y@}`&)15VI8_Sd>XG}%2 zj`hpWf3Rd}X0M3fqFJlf#O$2(@9*#STRkd|!*-oDm}6C|wV-=x?71r|0+p|*sm!#g z{Pdw{|2=Rw_wzw^c@=F&)kM2rFBS*Po}d`9H7hjB@0&!yExT)KSJX7TJUqKT^e|q! zuG1s__&m$PgGo#iek>BroSeMS?7(5Jgp3uvAEy8L`FShDsi*oA{?8A%JxS=*m33PM zADq%&e}}<@W25EChb1d`KLl`d{AqGn>G62?yFE-Dr>5!7zAvn;u4Qv~O1u!uQl9d~IqiYZir#=Jr>D#ake=Z5jbVN3Ee_QuKWx8F zka+w(hrMf&M%SdA5;B|u8_>ZT=g7X8q~r3$PVi@-OIh~`8^N8XSImBPcld}+{BHZM zKyatg%)(NUiAz7`obNaxo44QX!5aVlprNlv=1QLoK8OZL&tRRxTqiQ|m!j#JdM;*G z+jmzTHm4j5Wm>^J=kU7xXSe$pTj#{zONpMD-(7EV%CQ<(MB^BQVimf!+l98Oc4C&(E#w)ZJ5G zTKJ49O*+}H@{JbfotD_-oOy=N797_%zi?ye_A3&_S1Nhg&h039e|+7l$XJ&=!((T@ z#~jynuuIrzn3k=yeZ_pkw75Cd-vVsDfAo5gmcyFRX!y)O{rKJk^N-DVs&_~CKxXop zpy%t@Wz3JQ@jlYGrQ6WW{BFr*-ILN`5naZ?+dKK3{g!vm5O$wmZmmn_th4S?Al2?FGmE6SHON8LwOK|GiP^r*?tR4epqS zf6N#^H|9hH8tI+UFI<-_zk$)>_3plkcc-=A{fU13vHHZ%yKnAnXZp`{F=C+&&z*OF z>X^%R{M9*7m@vIKor#aBzuiiHNy_DAX0CyMmd^Pd`_eX}r}DOh@fAz^BiBl@7{i%Q zHySDh9Vzxoe-OC9WSc-8fAogw1<&KTO+L2hbFMjXtwxQ(oauX~2V;Vbz|)-7EwOh? z_gKGo%}K124v>7op39y(eYgU zBVS8QkM%b?JGiEQu1je8{98&R;_+SjVf1rhhp-KkrFw7S`5?Y)m{hqxL|G__CBa zFYX&3n{(`1&jGGz-31H=S0y$dmk?&vVOZ7ak(gi|z#qX~!nml%uv%!hN4czdQg-0` zt`iXpG`5{wo0arDzKLUj$hMUQs}0k{Kg`{I?Nh`<#vRhy(>8DX>#{w$wW4>o`%AI6 zj{`-H#$VeNzrI63>FvfOlgqNdPCx#;{`c9(mfH?)uIIBz@A-Lm=i9B;c(mazrPrfhNdhG3bMmu&r)tJ3LbL{3>sHD9Qn!arP zHgn!+&y0?>tmnLryff*)Rw3g0ar)XDb^TIGL4po0U5xLU*Y+A#H`X_>%`2`^+G@!9 zva93Aqm}RKwkNY|&ZxL#-S}4AisOsr+^N?MiTNC=i^ftt8LX&ur{-$~~!9c;fYqwff5&&-WVMZdiF>vC^lF9cP%< zF|#E^mxeKQ$Mn95d%(3O;%KUPSj{}KiTmDJwI}|bc&y8#{Efh;wqwS#&c*i_w$J(7 z>yomn!-wr1(>+shw@0R_|)f6RXdul)GG>cv6o7=VMN3UVpybhCteb;sg z{$Q0z>4|*v$Gz)B<%7hW`t!GM1jZ-)_7P*Swh8=q>}aipz52YCM8P+Ge z@3!R$DSqDT`(WFf5;OU(UuGguHpgbs|x+0@j-KE2WFQ+|8GNIWpEwaP+leAza zhYW|q?!Ef^nr=K?Y`H=H!`m-ErXIexdgrkjKiq68A8R)3-F~{)@PC}vnn`vAhZhxB zer}mmcTvipLtx^i8+?Z*u0$iNo3{lgohf zhqFsvk^B|LEr+)iKJT<|>t6BZP?*2Yf=PA;$7BL7p0rr9y-9De0jG7Yhx`JG4`Lq_ zE|^YnQ*B<}XqdO3qbzHZ5-0n972%C@k6+#RxxlvX?U}E<)pNPF9Os)DDxxa8_>gdl z%M!6NrNgbqW*j^=<8K6`Rma@?Q{mMWu`WukDcv1=Ue0TwlG5CfBRa9X_PXHnc~6dTeVBhBE%}UQ@|lWcAHn1^ z>3R{iZ;sdBylc7o?$<9O6VECc9lR-c-&S9t?AJd-B_+>)n?+nbMN2G7KYTR(f28lI z`LQ`-6OC?U8Zz8toyTH#m~a1^rn&oHDZYvLmvw_vj6Y#{VScObgwu)YHaToHN=o)p z$$bgG-PRrUtFU0UjwxBz5z{KG^@}-xQKI+nfp@ZkCsTSPS$htg`aQ4Vu{k0Wx4yggMr5Moxn+{? zqPaF43gNZ(RLa{g{O$HcR|obt?Y+%=3#}K*j;!il2VI|GF=<^xeC2cdzWMFL?K<@Xzgp@^9?d%rJ>6!>j;&*jaZFxSTZ4NM^#^Iq%qzn$Ls@X(th zuN!`yt6yLpc424ohWO*{mfyqPO!->z?&917=6U;_R{a0nvxD(E!^}JXraHJUaGP-H zT<_fTYii~^Hf{Xia_($XZQv<67VBx-wzuQs3Nz>ZksOeUlRr zjDNdXXB+1g>r=T~f9pQC{I)l}-u@f+^RMUL&UQcb`|RQS$7bl}-4DO5)vNoVbMif{ z1v74x2D>Hw&P`)zcTL&VF~#e{E4_eoOYbvT@4qVb=1y>ZVs^fGV$aQ_o}Jtpd|Qrn zrG~yS(cv__9@OeI`*xeIr?<###{+7sOJ#`O%ykq@=;x`iFlOvW_^9i1O^sSclOJL41c5NrS zb;s&r>n`2s6j^`J?0hY=3Hv|etJO9?_Fa%m>d_QSkABbl;@6B>9Uh6vXX1~|IC*S_ z+l}=%S0A~q|77F;pqS3Jf6p++mDGBAF%&2pw=>N>syF4D@DIV;XMWG^5Gj4Q?h|KI z$CL82yYE#Lbwz7Ax~%H-C_DeLBE6yP?4{U-bH`@X+_+UH_8>~|WQ**VPmK{>T^?$J zJFne*xmf61>RW&D^f*DyDGpVYE=yK*-!9kL+#T(*WKXr{=Xt?*V*3-~jg%k%2tQ!9 ze0%Zr0`)S%U8`*q*9ra3Z1}$C&!cH6A8t%Ix&3|L^iM7N+Dg}t6#IsE&W%5RdijmC zk5|;MT-|-T@bJ0ABF%HF7F(5hY(02xk@k&S2j}15WIVj_tjGT3-^Mj(J^ZU5MYl$4 zoZ1<^%RqO|?dw;rNm|QP&MLlspzDI+n=3M^8@NN}9^}hD$ItV~>2qY+8=YOjb8g?h z5_a~erNr&>88>h4VZ8ljn&b~A>s*hBIlmunE}ynr{^v&D>Wc^R^?Yi4bLFcZ&FG$+ zAb8&PQ|$iyhnvKm{@zcYa`tck`CWfgV>0CaitXO@BJhogfqU!>#T#kYf^Vo@ReJY> zV|xAb#OHChTV-pC4;(euowud-=Th-JMT`FUT>pFPo_wpes`h(0i*e)M72J3J`QCW; z#O>n}Q=!`_GOe-gKY5(QH~zdq2)`r+UCn->iH_T=9A_`JY(s@(oP z@8n#QfBWD6{$nje+wQ-+V`VDu{9{Z%&zO^aSpD38k!|}$-ZYiZPmGo`OH9A@&2(zo zF~6=^n(t~kD*kbnvh9;G&$)b+?fl`a7`Cse4N*5{ov+Mc{B0g^{ikYp1z*zhYOA+@ z)T$2Icg@u`pT%9Ptvcua?{j@`-#Oko-8xlv@1eaa+LtRFaIw|1@57yEAOCaSR+*`M<$rzE{SEma(i`@it6jVM{`RD7x$}w7wP!cY zJ+*)7>FEBX+1tvB9Jf5%@&7N|ngq!;9I+=`?GC;vymbC_tK`c6N53h@z5QdgW6wm{ z-QLF@r|tC1ao+o z8EpGdcmAfq>6?|Qb9QhirLQ!*kzQ;g-jcng`dn7x@6|kI3jI5(zs}&kE_~zV&Hv)N z`!24%;m^NlqwihT4f>nR6QA$A{V<1{`QL%Bi+5FgV|*H9%in4x9Dh!FTk&So09CpD zhi+{D_q(8Vt@XR?D2;cPWwHg$$77GQYQDK+zoTak|80>X?*D5`W13}UuM3%ZT8 zBdWKe@A~n}neTJzCUkTEahhjhtX^clDPgw4?F99CJl)C8IWjl4zB*m~XEo#2$9ES0 zk^3)H*#C0co0{9aKQ2Dbd%|`6&pF$3qIvtoS4tk>^8b-}V0&J@d7c9AHvjVsXXpM- zeUQLpmU5iyR`|MxyKnmTpKKKuh|g77Ui|*Z)vAs9#rqTD=lL=JeB|l8LD@1r`FG^^ zN7H^ETQ_0X=~m9-!Y#+X=}PM9thME^-tAs#k#F8W=$@HYLteYg3Ne!r}F*vDK739Q%Ceo6aPIOVqI zNhTjQv+w=3Bc9<~#U1Yr!GC_=;coDh`>yuJ{mRc6$6M!Q^IO+?rWU_Dzv2GwqrUr< z%6`eruWk^YzvqV3mGE~zOk#p%w^_cjDQoZ+oc@mO&4XE!9e!6_%6!fB=-9hCu{T5m z4x0J)m;HVkQ*(7=Gsm~1JHN4hJQB<5|5jS!-8$Rt!VCG{?Kppp@5Zw&pZ9&f1HE*>NIhoMF?OL+>;X9(qhRBH&W&VRxkyKyV^jN+-WG-lJf43lKZH`r0M43rI zhznbiJHOkmgVLfqe$1=qzVn7nYER4DY1-P`UcPtB+5Fk}#-@Yj-yiNhkdhMQOIkA|O!t1?uu*$y(^^SW zk%`)mVxCvu*tdM|jamK@A9hR6oNn%SXTNl^U$XszxCYUM*&CE6k7_Pa{hiy+y#bE5)9_7@!PdoG>4>PKZ<;v0?an;ADf_BtSu{Ljy% z;M3(3oJT6M5Iy@MY z!=1kFlxKQpcx+3jw3%tZ!$6Uv`7TeCA227M`4n(_(Gs5PGT$Y)y)@LA{9)Axjjl)L z@0w2UXqpE=y6)?en0qBJuP#1s{%_8LL&7m##UH=(pL*)~E{d#(@#n_e@3>do4k2*b#cGlis_Qh?fh19S<*qB_9pi6 zbxTz2Uq4{NvnmP4SkV2CEEAd8`KIW`>@Y~a_y5E3d$#d?oLg<{K20}Nv$^8N&~YO8 zz=MF>5B1;P+J06tP;rj0w0U|*=43uutCG@2Cf17YZ@<_1w*S0&Tq605_dyR27pbIh z>$3tsK7BrR!nbZZx0a3L5eZ?ogmd%#`-7Lw;oHh6w~6tmQ*O)tIrjDUzR%V?vW%tW z#-ALYsx#;9idYQS>MS{2Gh0CO zQu&~3N!$B>HP>|*{{Q=(zv`w)Mp9Cey6ib!CFegjd)FI2i%Dv9d6M=(&;HR~xd;9B z|2|xnc^dR%_WbxaKWo$)n%Vi6&GPlS_4Lin%?xku?A*MtBjxMkE1Ft1nvXpf)C4il zH!m~0ez=`)=`>qL=yIAbpFV&2=dkDy^PL$zJ8tf+-oAgi#`I(B|K#*AJ_xWnb>8cN zg>-J~^A{JBOBw6aZ11f(G}(xY;ZFJeTF@Zx#RJFv<$Oz$_1XI? zJ~K?w3hg>BSFLmLB>Qx|*i+x{*T2t~@_Hn~vg7~1-z#Hw7A9{FFf;7R~}eC zzs~FSw%nJux9hiZiFz5t7_~f?xbf9?-;YP!Z2WRQ-D0{zJT_TZG(_iJd8iQZV|sj@ zV)V8g9vO=dlQwI7e|g*bD5sm7+otsMa<8tgc7J!LEOP$gcK*#}Z=+saS?Sy-!>K=g zbN&CiMT-|}Ms7;!dh6l6CVG3{dAr{|^Xqb$( za1$%HgjtTn)~u^u27jKNot@n3&MwZ<09wl7HB~DRwBDlReB+^D84Sy#Kl)Tv&?c&E%TktB({H&#lAl>l9DH98mD)3 zbb#_QW9`L?*K4;kSQI>9Xy=z-7Q4GlCw7-eL)6x+k8ii%pJbjN*C%Uz?BU^d%i?D| z(&l-4H2O}QIB`SGF`4K0_xI1gyxg)SVBLS8nMSS6?EFS)XC!u&zd!fp=H{Od+vP!1 zXAIn8It!AI_kDSL`@52%lwlG}e9cGJglw_7*5%KRbPDI(+S2)aUUi@EY_pGNjL$P{ z$hxW}SNTNn*7p4KlT^Kv9!G4=5|yLDzyH6T_cWcvudl97(T$!4T1>QnwKz&aNvTQFIL)B)Q_8Vk zY0yf58K&7`2OjZrb3fjATn@An05+YjKChz5{{J82giMXj$EVMO7GeDS^mK}T{5(!! zwIh0!bA-ay#dwyKnAHFMDjvBx?P)W=UB}wJUtV5r4_xfV_~DH4`3qaK!$B$g>?~8z zx(bHl{qpJ8*TsgciM z($3EVttGH5dcrZ=JbzixQm>8r%=!C%s{Q`{o_&pl?>w8CF*}Psp4Q+0;qCVOpAInd ze|SE>epBV=w7h*k)3)W_c3bGwnsH}`;s1ZX^-oXJeLO8XZ(-HfS65a9HfLR3^)vSJ z*}2x{e}8{Ze|)TWj&1d{4fbNWoCvS7I;n7 z0xjMNTI%)jZux!H*HSgQ%H87nX-`j0ouVDySNQnY(Y_`Y(Rm?D^X~4_iQ3Z9$jp9e zbGrYz9fj{Dd)ehG8hWM8L9tZue((3Hy~jFF9Pi9^IPHBjeno(yTd&m7Q&Y8X?kd%0 zX6Iwsp`on3vR~hR|F>J&pj7~KyqEAl3j!^1&AGQ{CTRY8vbsNLZriBvk&EAayR+~2 z|Mz=(YN}=ZKO0b5Nj*IclI$d2A${4Y~&K9&%YNqk+!qmIF%a_OOECQ8l8#WlI`OZ25N;To@ShA8zAyad$61Z~Ohia)0?{J~Jo1o4%tFXFX%83bzS5^kAzw=Jn z1X`W2{eGRby5AAL{pS}Qn%p(Vy1Z}u{kqv59UPm|&U$^zx#^S}w5s6Ci@>TcFC6Du zmG1a@EqZU<;~v9g;oA+Vol7^SoD|BszV7Uci;G`gSt;!BCVIAz%%a7MB~7zJa_aov zNpH-*@%H)r`g47<))oK%eh00y0Ijw)G7=J8m~^xY6kHoNZ0MfVyNC6aa=(q!`nbJG zzxAJ;pD(|{o0n77d)kvHCnw)2y&h}x<3aPCs@H3MW|?$~$JYo7K3v!?m-OMm!IGDk zTC3mhoqla?bnx!7+)qzWAK#dKJmda8TidEH5B~i83|a%h%+B}W`~CXhjY&sum_%*M zIe9(4-uHN)Z04OEhK7cQDd*vC?6WpIt}WOaWvC8ehO zb-#O$^-BNdb6@>oi4bVbQRwQh)L&m-g4XeDOg^rpw9rg@fkg5Qi$bM`4{Uv)B5{;R)?*9ac8IT^|)$X+v;yi;`i5qN=aU6vw&40nxCGWbWTZ8xgJyO zo5Ls(UQr{TJ6%71o>u58gUU}&4#ebiaBy>jR#^2&8n^xV`8jxJQ7WkLzP&A%QNlQl z=kM?D>Q+{>CMvssdbxZ)(}gXW!T0L_*D5I~NtkAd=FP zy8H1Ymt{UPXP9IP85$b?`FLD@icX}_wtCRwI3770i49Co|N5oBzP5Jb@51HYQTyv^ zyWVf*S)RVU5mtZn{1ogSZdYfC0*m8#9(FPA@V^U3H{caX8Kn`2k|tKe?w^}xMV zrDpl}<|w*8KX3nkN$%}!plagWTZ$wOnVH5bLsklXettgvL+BZ z%X;GWRt4@Z%gwsF>L{pnq+}Hb+MqDgDAnl9f`-$Q`P-c$A|ya%YWDSYoM!FWz3L2S zW*WDH%JW^NuQ%o0-F2gXuaT5<8&Beo4-ZS;+?cpxg~q36XQeOv;Fq;>S?tz(V_&Ux z{@$-)2dvCR|Ie^2R!ctK_jFoxUgFzIhAuSo^gR6L=H~XStE)gO)IiJawq{)w zvUP7&PfcO`@t~O>l#*8jEMx-JHyI}EXxy*+oqOQ%|5vNm zXWZPR+HdzuL)~wV$A+_YXJ?r*`bRS=Xdh^ouRAf>-_En5;)m*TU9b0xPfQVc#Af>M z%VYmLg~w&@6ddNwxwS>};7qqY#=0v$Ea{QhFj;ipzhAFA+1_3Ido#pb!!&YlmFep6 z^?qA_EMC0$=bO#vf4tdzK1i4M>7*kJZ|?3kzqhY($DRv|tFvw|UXps}#-z*XexJYH z&Ie)jpCO|2rfg)mG4IL&rNnZE#72o_5;{hyr=HxlV{~euo z*PqF92Ii(B9Q{sX@s@_n%ga7~ zzBAuB*KLwT(G!mqz8(`&PfxqJyZn8??1?FU^DHE@go9f3_y3qQzwVFbm9!s6m#W$O z=5EWsKX2WqT&Fo!rCK+iulmr^V0pjx_`2BL!u%^@CT-2WzNzf(EszPf>_AI)mT+xO zKc94epS^Rg+pfg#@9y%*TA5r)TQXzHlXTH}3X_!G`|2BoSh>W0lw4nT_qS7S|9lzl zt&DPE455nxPB1XY9|fHY@bcZsv-9oaxfjIzWBU1@bE|HnLiM*d?Ty->o}M=^yuZ)> zKi^i{lPWVp=f4Gy0_^(}v%ujW^S^nk4+*;zJwI2=pmFin!?5@3V>jnzu6XOYULskH zvD+!PeLs(^od%Oe_#&5&e;0036?k%H=4XL|qsedOYL|!i+r3==N>ZuEFuLK({bSEM z&YlmS`r-FdXSC59(3%7duK*lD4ejFp?Nc`qk+G@?xELV4kY#SpLNkS_8cTlu+@t~- zpE<*~m9b06;nH=NT(1*>4>|SH?<|YCcckT31H;0fk&P)&(hZL-X;TC(>Jien+Tnn_ za}2-Dy$zOF7$xE>fT(App^k==7sG-~x9XBR6b)?UNI%mUZH9$=p5oZb+7 zASL+>r}#2%f#jY_`+1*>nQI&8_ZZrDdKf=oOZLfsZqIN+$p6ycM)k(c$7UF6?&Wh0 z3~F2FFw3jML-I}3m!*xm4w4T<0?tcpwrg4Tv$f+7!xY0~Qwrb3H&h;*5k6Tkoc)3F znj3SNxER72q#LD<&DgB8Nvgx_*p<%bf3zF_9>_j6rKl8NT-;q-E&S3riMH>GW^ZRQlD77|-9f(Ul^Pd5f2KgH#1W!IX z@-X=U#|GIO%1YaJecsI2-f-RZ3HJm22MrxtL?-@jsBf@$P1)A*W7f1^jQ=}M1i!me ztMqASM@m^?oT}3PT|2&Yp709SKFoQ)|A5_tc)>^&rOKE+$qkWt|H~I}d}!KyQ@v<% z!{P&J3Hv*KxICF;aqz~&Imhq3PkB(U_wLMr>j#3i?-f_?vO6$q$D+9+E=!ER-OFe0 z>+;Bd{#D@HzpVxDww=3sX{Y>wd&_e)x+dv_R0OquYGBab!`^Ec+iSR8DtS?3_{P8X z%ni32_BUoK1>Gq2V$WIlouh!MLcD_W1=|^xSq#3m4>u=ppR;bbnRh?D;UE7BrV=JO z7B8mxyPbYlKG%Ej=ni8@|MOk5cHIAXKsWEd=!3)uY7e{;BtN9un5yghcbyOr{K;`U z{j=N#jd=ySjk_EBH=3@!JiX(xd!gXVw>P1@Qk6l6d1%D<<%G=e65+ z-oJgfo%6$H!)GBvIe{Xoav;aYy!(DZ_0SgPZPLkcrpL}O-#aMwr@Z=*jPbD&vtvGN zbqB=W9PTxopTJ$y@cQu)>l+fEwYQlu6ts6tVasDnlTNlXI_ATe#;|pR(oAs+H~>nzto*kp0@>rnWj!T!V$jd6rP?{3cX(IjdaG`l`bNI!#`iz( zF0CsOx_Hv}c9_c6xp~6McPHN7`0mt+8EG@l|2@9TZS!(V-D|tnwSNEnF{1zF?sbQ& z)*GI!UiY}_(wR*S%TGn5FZ|3o*C*h|is(Z&`##OHQepYFHr zUS#)iU)uD~x1t-EoKiz~oVyhF-t)oxmNMnNTyF}_-3>kUt9#%43a8_ltAuWS+QpdR zkWn7_k@=77SM$wcX=Qc>Jr}OsKOppMHMfjvNE*Zc*f_O>wKG-4DpRH!oUe4SyZ8OT z89sqqZ^M4nMm^cP{&s`af#jCH>vx@A+<*I)>xsa`pcNI14*YigW_n@Mjdh!^bIg4? z?Y(b)d`gt``|OLC*Y;1{@N3dM?Nu|sZ`E8_fB$dA@#F?R)xGm(<{EBZ-5}x=&CK4& zt{I!kkU#xlUBc{{chl0gGk#|f=6HK-RmatP*S)=GY&%`ORwRE;)WOne&-Zh@o#w+_ zaL$w|>(l4&brZjrGA&H@u4gW4@I2sVd|Py(j8eLasQ;Hc{x5#-zG-QG%JRG31*wW_ zXSf=6IygVSV|;Gs>^(of3t5#F8_9k43)0y0E^Xn=x6ES9cjp!#o?G195ZB`MVgH=s z^VZMrsg%TI*?y2!mGS?$ZtKs3(f;M{ebzs3%$`&1Jf}FbrSJG2c9m%pH?A+vYbnmt z`Ox;80akGXg}??I;1^+ybAnC(9PyIuMIp~S+q z8|v*7+gbn`72mm}d?a)N>%r*^r6L>>tW3dXOjpssM}(*?|P&Z+s& ztdPH;^+HByhxzfIsvmzBICmW367?^MWiR2jYGKJ^U+_rqUQj$zZq6jz z%%>=n9b)q@!XWL+VeV!=#ecJGQj?NHY?Ssdn9NP2D_>VEdT~2{e{RfjKUp!|7@I!_ zFV^ocd|{*hLfCk=XbFd)W$lWJMH=eQJ#rh~G~WzopZiorg-J_Juv0>`pMO{B`(qmt zzq86J>&VytG5q}OEVor#$DFnh8@r6_+hqU#{(pZ#a*L{=Vc=0^rND(my9y(u^JWUO zJ&*BT;O6>V-l!zN#vv~+?~0MQI&cx$=q9JS+H5SjE9vm_dvz3_ZqO{TRsPMcfhF&St zMPX~Bo}P=@IceWsrozI$vPtb1uY-0CgU14lQn^-#uUFI5>@-Y1mXHP- zyYQT>HgVRhsApDoKc5J{y1riiVoZ?H^O&aMb5qUsdQH{pk+GbVdwW~p_Pp3zTQU#d z*qD6s+_`VY%RGDnKF(=*cX#*Zy1!Lze6n8u|NY(huub~Lrc`g2Ykz;eUVnLkBXiZ) zSFXqVWGnyw{T{iiMDv{GG@Zyp?D91ZS67A3v@BL*X6H+}v!f8S74+fZcKLYsw6td* zA9Hn!>p$z#UI*H`E_hOXe}UMBtCrt)6zeVBGBfMinv+XBCxZrmtG~ZnTKV~z&wRVN zfBw|SFYaRTK3Y8K(W6H@KA*EbdFs@n;^*gLDxXf}kuvGnTm60Bm8$A5FAkoYYn^## zhoN&DkLAAEya`WFO+DVPyEbZT*VEI}LA#LD{O6tNku<)sx7r*u0{s2m-7R@{XH|ZF zW?1qfAnoid*P^0No=;bCh+n#9d41c7;>>%+Q}-5f=hsX#&wJLpy85x&y&p39HT%rh zJ?}mL^%(Eo!rc5jC#0``IVN85c=O)E;`})edZQ~Jd#R@61?v=_PMR6Kr_j{cn&S=I zF{aydiskqJK3Bb#Pu?!((f1dBKA%@tR&Gu`J#Ayj%OKDwnf3cU!Yk{UCeB#)sB^-R zBQBRNUp{&2l#-@q=awxdMMXt^6}6zfXJ4+n+U+FVFi{1Mt&78@3;L=iWNrMCi+v;yBy1H+l+|M|Ag!%Jc_k}$9bDs1r zuX=n)P3C#8{-HzW)B(G4qPYv-f_Sd+&!-{-5gnnvLdlC#08GJXYUZ7@Kc% zTY7%1(=+j|)Om3_pC8}bvDAEBWXesy|37kKXSZ_Sv#N`#^#o;;M@PF)o;Z>4?ad(# ztC#M6`M((ZH-ILSmfQaY`6q169|i_v?rK}m7DoU1cA!a<+TY(U?yIf-_v`xpORK~6 z_x*aM9ko60?8U|ICr_P9dU9eSL(bh@Q;!^Rsr$M*9u#T}cE4UIgJ!m#otb$UG`HG``(gdi0oWckg>0Gr6!F8##&i6dUFlfhm8uK6p+1_-T>knVjT}AKxWC zc2-TxdkaAWL6w!2Tk`MAapeA8vTT`-n%c^hD?xL2)$ew;=kNbJE%o#? z*KcR19kMK6Ui@zRzC95=1?R4^-eU+l^X7V*+488ZSxfU@RfMgNJG*px+^IR1#WSqS z^B!J)_!9x@L{es*sgI|C&^HJe?Np;pew3baj}D zy87iEg~^j9PX;B9nKNe|IeK*BtXZd?ot+IDCew{-`4^zSkNaJh_PPaGS68X1s~3Mf zD*pM?X?^!Mf2S?BwSQk{r99)NdD^#*nYrsv{MlXpep&the_!6-p8osY?tatkYZtcV z-u@&mV#%8k9?f!QzWw}*i`_48Om@GvKED1E`v+lR;h$eF``_GCX*|E~mnP`Y2Jh*5 zM~)va{(3chbJ0_;b9TRT^me~73R@Rbx#z*Le);-8eO!~(d>7^2-F5u>&r9C=AOC*8 zKR;xh!5*$TKN#0tj>yZ?^SA$N0@`^oka)PwB!d}PUZ^X5%Zq2$^v z_VLBy{-X1?-vd?#EnSd&l;`;!Ux#hw4gY(>0|FebuZz98Jzu`~*_ns8ve)xkP4ZX} zV)L+&0dy=v`TpOsv(0iBrJbGir zvuK*W{?FS*9~R_!>87)Z`d2(sEV+CRG`pF6tj8$*-}K$=0lU9h?qlgT>~5U2evS>Z z`Z|qSzIEdYJIesSY^`|)Gj4`H zJX8O^cK?626~&2O7V{a)UKO7!W#yZFbJl{*ESidncKi!se{VbeZ2zBElb@c|FIsk? z)JBMRZ^P;)K1HRCp3yc!y!GrQ`|AZYCw93jojY@n$EvyGh~C?*$sNV#VqeYq{5I@{ zQc>1Lv3{4sZ(G(q{&{{ubBD*9z>gj#YnbaetXevbsEPKw%$a$X8>~_G@x+eLcGq@! zUa)jgF3dYz_2b8nmJFPsLS+ogU)jDdZ`s{YtS5QGe6#Ju zer2WQR-*nQrWpnA#1>p!`}bF0%=iAU+|B16FP_-4?(xN5L)RzbB}I)chwC2H!#!M> zW~TXqM@eY+mZQpo&*xYlw+uIaA)_QTJH$qa_i@90cCc%^+!sCM`1K=AP_wn~qsNh% zH=P~R1t#8Dsw>xN@jNE=dCbxU#T_0wK_5L#Y*>4^paId*@x$wQg^JWAMsBEx%bc0A zyx^dLgsE@Qxn2&dc1W-tj&w-6py;AvmKi?V<*cT)4ov!{g1Rb!MFw z&+j;&+gaUo4i;lyFTT8@6vQRk?{Zi~!TyB+#O;M?+pNL@eQE6%rh=xk82KcJ4d3GtcokL@wip=>YOa)O!@%eH!&{EJkx$Aw?7801}(V(WG-y?^%W?d|!;?d_tk^HvzWuuQfR521WGi26?a9FXm)3`fw-LhB7>Q{5W#= zw<|lP&rjNZpUbMr!zTzF>wAjQJedydTY3&Oi*|e4+s;<51NXyp)b-=%x2p%u0p%IX z>14i9MQ1jG+9&qf*kd{7jgqm)D~B z{dG(I>R+$jUh&}|`^p&0FUhawbf>rpa&~mNFG}S8@V8TMPuf{2w_d5Ejm+$zc^vVW z0>-zuUd~&rw4D3yP6wrPXP(Wtx%#2r_T1ZMptS^fyI!ij+wqvs$k_Ph-QDFTN?jfe zpddfDGv)c6O3}IX|Ns5vk+quQH`nUoGGFO!`S;IFP;~BlpCml-ayQ6Qm4ft2V^I+i zgStNzLBYYD-QCHrudM|gAG0cS^)G=ym!?JbnyOM|%=f36Uj|J-ojH^8_SROD>}zM* zBb0==L76E%E%?lv`*VxA=N3Pk^P2s^oY`;Z7(WQ(h!xmX{yvUR&PF05PVnROF84(% z^$WxTDi$3y$p0hd;N`{j_xJbZ>F4L&sr`Oe#-c!B!3?EG>Z1KFy)&QAj$AiWwBqsN zv}xQT4lj1iQFLybFmER7+h4e&Bou3POu5n9%PZ;DmP{Twn;C-2 zZU*J=V&+voldSskLa=1ZBpV<@bGZvy*-w}%l&w*u5q3|cWznP z+~N~w|GunwFw;P+mNnqxiA?XK!t(?jid@tGJ#25jvO2u~{l4FEM}^zs_Eue78*RSK zclNQT)8o&TUXK+oSu#0jxt}Z>zg*0_8c>IBwplKdh54(6E=)@vSu%p=qDx<2(=DF2 zXOGRN{+H*Dq=IUs$H)8ii{~*ivwzQ0V7rXUV{91Ww`<-n$HxJD)O#bof^?L64 zx88djOl(+D;dfv~;9{@6w)J&&cAL}BryXkHyi;*Gzt*oT>*oG?d(g2R7Yvy;m%on# zt>qEZiEyZ@vI5Pq9&YDnzmU7*>6T@WIt7d$Uk#6c%3uG3*>{%7L(syjozMT*U)Y#* zH7}t^;&V7_o2rV6i)P<`K3S_HQ#6A?hhZ?Y@hE6(ci-BYZCw5B&4R_9Kb(#VGirye zN%->O;*+OO4U3=o>?-B1JvOszc}m(g?ureIK3hLO$J!RUGDx**VGU@W9n@@W;S_#x zYpeF_Yik!5K0fAnT7PG;P8XYP!nuPh zgJBILA46^fOFoZ%{OONdi`S`LIC18i_49iys~DTlywQGsM__^4heb30ZZBSEIf46) z)}Bz`HHGIwnWNe_dgL}FAMbNj511lS7xKMT-0b<%>2XQ#?(F>Y^L+iYRjb!=na%Jx z5MuN2C+CA>()mx!_y6QIzgM9wtnRlYZf}+9xtfQqnlYtc|35s-+MTxk?~}_l3(PMF zR0#ITr`XqRTrl&m%f@c@vuoyk@BX#n`<0Xhavyrl?YOS6a((~GtG>lMUtz-qOLLhF zo;?X^ul=8$bq~mX@VG$y)X9^bPE%f3|9-PMa%+~T{=Oede}8{}zUj2yUf@iJ@dx> z^S9eGZb}(fpFUIf<=FqUw3lh$mYVOoekN=7O{e^izAbjr&sR);F8TaU^tqjV>L0Et zYZ)3&?AF`0;*PtQ7uSc+>sAL}1tp@eFfmO{%`LgNrxiXvHg{91R*_MNjrxkRx3|vB zv79Wb9R|vFmo8nZ_{~4Xy)JL->-x?$p?RsZ76=HfA9IT zDK)M+BBuHG=I~0JP5BkEJx^BIt>?joh0Ya`fBPf~Lsy5TK049~8f?h9vt#13v$Kus z|NVishbLXSbO|)E3|c_}>Q?@Gz5aQ({yq+?u$5s}dSx87|hFz@{x0sGbm3rRa zdd=mge;ejEfX=qbzrRmtdFhJ_jV~`RpFDBmK~`Vs-_klvXL6VWzL@|0eW0{LUEkul z8lyeK|FpFK!Yi-e-I&Y{T0ePnQ|h0O{q-pq7C0U`e%w9lYvZkLZ@Jg)`}L|o%yO&W zePPbYUC&uShwq5aTJL$8@nX+IZsTY!9oozPhUXQ;aD%VoqUUp{0Yx@A&;)UJ4T>7Cz!UFO}f#n!YY* zsh3oNUsBSei7Qk;&766by-SX_z9m3V_S3P~bBb9V;*Eb_vMlFa_`2)b%$xRe50ySR zz!B}cR}+BbEEIMoskaQ9JM+Jrf3Fx`1^l1+}Oe5 zo4(c4WoBgG%(Yr~b{TFKOe^aQ4`48ENM-PyWs>;r&d!qe_vY$GZ(|XSbg5bPNHBh8 zq}m3V1#Z1kpn^1e-OjdibFGbwo_N&#c-Y<`+~u)lWra!rCnx8U<;y3}oatFsW~Ljp zCE?wjogyMfp5#7rQDF+P5dsZb`MbHX+bAhL($4+Z@%~H>Z@|Oz76s?#a=-EQ@JP6|CG#S; zSmN&QZx-g=z2$gZpwm)I&NB7Mvu8#{PfjdI4!PmGH$UKG#}tR7%FCN%68tVG9-2C3 z$`#3snNy~GNxcy1lGNGdo-}V}DzkIbIl*-&gVoNlMQ!uQ-KY0LM`@#rx_C!N$NCVk z{i6M#_We<1C8d2q9}&WH{oeNfI2o*_#wP1j6R!D!L20AM(Z~Ja&3p<FVdQ&MBb@0F+T?&;S4c literal 0 HcmV?d00001 diff --git a/akka-docs-dev/rst/images/compose_graph.png b/akka-docs-dev/rst/images/compose_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2886c21993ea4d02ee9a113708d6dc719a3475 GIT binary patch literal 13782 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 F69B9MD9Zo< literal 0 HcmV?d00001 diff --git a/akka-docs-dev/rst/images/compose_graph_flow.png b/akka-docs-dev/rst/images/compose_graph_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8f86ee6392c8c90646726ed60fb8fd113e8001 GIT binary patch literal 10501 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 literal 0 HcmV?d00001 diff --git a/akka-docs-dev/rst/images/compose_graph_shape.png b/akka-docs-dev/rst/images/compose_graph_shape.png new file mode 100644 index 0000000000000000000000000000000000000000..ac5c2654032de72acab1e47fafff39f424641ca9 GIT binary patch literal 15571 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 Ib4q9e09yHo0{{R3 literal 0 HcmV?d00001 diff --git a/akka-docs-dev/rst/images/compose_nested_flow.png b/akka-docs-dev/rst/images/compose_nested_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7ed550499a733a4c6f2af71a378d7d1b4c74a7 GIT binary patch literal 9632 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 literal 0 HcmV?d00001 diff --git a/akka-docs-dev/rst/images/compose_nested_flow_opaque.png b/akka-docs-dev/rst/images/compose_nested_flow_opaque.png new file mode 100644 index 0000000000000000000000000000000000000000..01e116cfa390afd7c3a145808a41519bb1ca042f GIT binary patch literal 7703 zcmeAS@N?(olHy`uVBq!ia0y~yVBEmKz%ZYKje&t-#^Ih?1_lO}VkgfK4h{~E8jh3> z1_lPs0*}aI1_nMg5N2HTUiA+H1A}CVYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f z>~}U&3=FbUJY5_^D(1YsTRB7I>eb^P-zUbq2C@VmWM!3Iyg-9PNs3X?DaJs8M`>Sz z$*h(QnMWi{xC8^6-GqHr6pyXQ5IVX;`_ViOt?nKk4M7*yltNC0(`V*<@2`%&RmfI# zYvxPMAGPzA&wshEboINJ^WNE&=HFdsRDS%-FUIgqzJ?pPD)@FBzPo*rb6T0vhwKOH z@9cI@c^b~FzU%jP<2!NA53C-fEHM0F^MSiOJ}}U5dd7Q$2j>q|l>ZM;-J+yEMGj3s^OldoX?AsN83hpUGF$8U4~ z%|5*xAI(=EF>`S#)7ttEemM6i5eyI1=C=gZ#Nk=;A;oD-()em=cp{j!;Vd2aCU zxPLcZ|8?ign}RJ%wn@!+`A+)LB6&u4#^lD=ckiBEWB#FK=G@2cE}vOrdV#UR=9ty( zyWuk;=k7SG+#q`3@w+&Q+tyPrWdCJ&!MUd7`^=?Bu5!QNvU&6_e~Re-j*d4CyP0`d zWh`#r4Nl$K*x#_VWnR?#i05;5)O`Q(qgu=^1mk{rR-z zX}!u9hWYIOq+j#&oc?wES8>Br2gMDX7G`?;*?+{}+P1Fi^?&vVejSEc$5YocOE*}p z{I$`Be}(va{_eMbmHyebP1s?^kS|zOFuQSjqg3Hs{s#5O_jwEV#ve^Re(d=Fp7S3! z|M+p_i$uv~U-P>qr~gcoa`O4vI5RdsZGUh4mER2IyQ>Q&f39C5){?j>?ZEv8xwLKR zw?6&bSd;%i_JIt8@onpAUyHs^ZrFC<_<@_M+x81&_)7Gx=KixMg(0oXq=2`eb$2-% zAM-82Nm2(K546AAr+O_vGmTwflHWoMV~Al=Ka=5xge z+@8T5la}`Ka9eI;SW64Xh4m?al$0jToaEebTyWoq*TVZU-WPlqe0n3!_CZ*Ae0tjD zMtOmKYv%Wz-p;grXZ6CFw%mVCoXOh#`*@lek3>eAI8*h}+^Ieq{6|xMwawI3=XpBy z3b(<74CCF((`vmWX0=?Hy=HP)J)7b|MjO``nal1xc(o|zO_$e#R zwWl=dwg35^joGp#HNV;>ZOXnoXZVzSmPPR2ae9%tRdb_WjyH=y8%Or^OaJ6PzMr$@ zS8-$S$A8ra9;RJ8aMzrvne+H}ui3IcqHg`Q7ibf!Xa3VX;l=IgEB+_m`rH5L{;|wL z9j&Fjf`TWVPAa-E-1%F4=;N%(XV&EE+!Ok5)?fd7%0}PwN`3zdcTeB-JD>CTNkz=ZMB)^ul(hJ9>WI%-Fkj6|F+r5)nAkUs^6(y zvfG~FO|;kF#gCte-7wQG^1SsaCr(;WP}B9KT*R)G2NWJSC7683KUBCVFzs5OK}~qz ze*S93e}6a5l;x=rk8qPX@Rn6M!*k~C zGa|p=aFc&5gHlXw4E6SqBLZ#gL|zB%`p!hzj|(knUTvmZS!{rK^9jj3l% zc6n62?%9mN#vO(x;pftyGe_Nl2YdqMHfLqPZd=IIJqQBSlxGr{dLEVj*cnex{o9uy1KYbQmK{t z%YV_NKu~byJt>Cmhr@+$#Ouo&mj&lN5)>4?xv_Jy+8aNggjq)vL58xZVUm+njis~G z%4bK;-Lgsh%$oRVx3iPe+|xGR%RlpGP0*>`GjG04`_?w|Zf08hu}{0w%r2j)dY`ac zefG`yr=|NnLIatEPu>f7U~_2d>EJfTt())Md#~~Qy%DI?)eKngQkk8g_E2eKaHHRW z7X)>^SxF+Z-;L(0LUut0oD}@DMw*hOt25Vb>F7-3$g9h9}3Z=AL=uzp=f< z%BePYVX$CUJ$C_KViQ4TbkL$GkvC;+0W#-+%o&rz`F6Q?U|fSGfUTW zT=!q1q|w-!^1Q%FKh5M}_dfFiiH9i+?`PfYJizmy)Jdq~^qE;l68F?It``tGW1F^3 z{(`~1XH4?5BK041M!b(rXq;(ku(|C(am(xTq71o$rv`rrBcHUH14&Jcmv3qdN@l`Z;z+8bS4T)v4f zIB>W7%$ukLu@7Zy{wpe;bi7fR!}aIXU415l&C46*8I$kSZk~CTDUMC-c&VMD%Iw+( zF^A&v`0TXfOzk^@vMfw=-b)H-;c7bul%x(WJZ;W$KSh#zAZ-4ZMuMeGVB>3ORCr5Mpc=X%8{nz|% zAE$-Iw7=6Y%r;4oQJg3zUtOwQ3vmo|YY&aJ!!2PVJtVdpW+at1|yZxrLMMWbh_r_QAp6?a=_nmXoS5mqf zX(RnteF3;c(LgFupry-MClSr|&dF+5RDMtX+U1e9EygY_=VPCiW@G1+^ZpI@pIC8B zoO@?x%jGS()7u1GT~sE563n@HJ$d6Yk9ExgH)s0HF?m?IpnBQYtIWcJ6J3Ish$T;1 zG|r5iH#0UTP1kG6+mbz1illo5xg@l&;2CRwXny z-e;aZRl{0+cH7xEOb^!TgvomD=&ADLXa3K0>xk8V!_9v;b^5xvtlIxcWrNLw`U3{W z*^|Pi@yCB__%-WhYvyUg&9~C79Y3RIxOq=R8IR(}T$9b4lOlbMt?!;`n-#hEOWWfz z_oH!Fw+H1e)6M7p!rHd8x_$w3LG-OpZfRx*&YUyZ9F_U>_^g|rAM0w3fA5?5HZ_g+ z(cimg*3`%BUpI5Ec=f`wm$n7!=T%Rbc~$%PYt2a+AB%ThI@2~?quTWJ+pPwhU!Pf% zW_f-0ku&#nmi{>-5&tWx_ltQsVOQYO_t%zo9BhM@3YFW@GW#MkJcT@*jUbo)X zW7g01jiGK{*>2-w5tr{?PnBFAA}p!8;f8V+ua7#<)xTHHeCtT%Zg6x6e;`sW&-q98 zN8FvmmX_saigt z-G{|bNoC6Svu~;kKbp2Ixox*Ckl#XC&sr%ry7IvPJAeO12YeFZAN|^lxf>4;s6DWK zpms?5n^c1Fhxi5RiW|=uZeH3V7dCrG`)30K#t6N|gpo$?D8?mpj}8~fs2|51zCjPH-__}ow?xo?@0XE{rO_=o(25}nh` zVn_6UKj%~yZx^V_vhOa73VL!Pg#yhk45U}S9!IXWqfRPBG>mDZ?kQ< zaM)^=koDHgjWcHc)w$>AqkX>Ld8+^MA8icm4CY6yj<(E`HGH@2z`nF=%G>_Nw5^{Q zvdBj`LN4IJyQA;^X+7kv)_mx_cgBU;RY&gf7kp=KuxpVMKM;AK@PKm5lIwFP2z39< zQkpew+rM%SVbfX1a`ih){nXwB=6bFb>5u(8f2QoyciDIU`Xv;_#HiaH7u}fGe51_n zw$Rx_KiuqE*Q;$0k?$kCu?0EC!(T4vETh5>9Juortn)=!t z0mYqHRC_|Mu=;hczRt=fRFxaP^Y`6%`(|ul{ssh4uxn z>$09$uU2!+TTXnvw?`FklJ$M|Z{3C4RaN%HwWOGwxI14>S@qYi``RBgv$$6UBxeJvKUzlD;YoVB|cFz6=F_od1l{|9F#xv=ESsXlQtaQ zrI7oZ`%&3_WuDvjXIy*tdgHx`AK%|reU$AkAu9Fs-Q34-Lr|{5P)0FG7 z%nDzNXL}_qICiuc{Qkv!sN?j}*tgGi=X#UNu zD&bvRMjA7RXEsOT`*)rX#5bPuPm+Gjd3f&KJAaLht2-z3__423mwElG{LNBP0kyg% zHr_7^`8v-()+zsg=*+SsPp>n2H`cw|XS6sxMCInEhX1>Mt1%e==1p95#roYo&2ug? z41cC>5dOvfAdY);-EG0DjA}t4XZJ(TxeoDZw#>aT@4(%b_bYcldb@bXo_RA()qM^{ zy?Zx*x{!QLZH8g!JpUV=Yn@-rT&pVcsKTsnTd?)5`>H(s^H~3g{K(bJ_3TTTa^TM2 zQ$qdSjmDSd#09GigT1drGymB!j zC*98R;_%de`b4OdyHWGww77kYJ52Anl&Pw^r~dPq(K<)#w|If-!uD;g8$SOGKJ>69 zn)CQnGa;cH%q_Afk{+lUzjl@Qx})d9W}`!eZ*Lk}{*$igFkOQ-KvMLyRULsW@{igvE(~by|-<_ z_uj%uN2dMw!TmtP__fQ6mwSZDS<<6^$Ugnpa>V%fUD*iv`lcctgY$Qz6vUxJoBxzBDRm3${9Z7-*BPdWR%^6&nSHuWdx8=CH^ zU@n-xyMD&eY}KhQoIWn6bWM-MFM5+5eDm(#twE>k9FK_yvfU~ng@J2_^ zCuoK3DAm>uTX&*V!l{jOP2ypmecfRJlTK$B7a=cB9~T!PPh6z>=c!!5At52w*9}9q9XfPq*4C_-$;um2Phb1B zvu~kJ+O;VKx|>~gK00+e$|UnrOH-38dsI!^el3S8_qr|6XCPCn&i-dEGt2d`#P zQ`$87R{8zf${!Egi)G!89rNF@E#|8!*x@*xjLR#?;?JF?a6Nu!dL}2>GVJD)cb2w` zx6d?X3`>pLf4eg_d)~G0)>9=Ws<;*g2F@+ocRzgBZ^oNjQq$a-HlNzeb>Pxc@6DNd zhEonKS#yHGecs{aTX!HJie$mc_QcrWZZ~VN!-YX$!p<9o{LDlIo zPK(`oPp$d<^ZESC+j4Jf^=KI%Zs&h~$yYE5p~nxwEC_XHlQ^yB%Dao72wD>XA0@Q*>?%*j;w>djHw;=a;+p%ZXk}D_xeH z5Y*W7^z`)0TeHLeeeAE_@O)nNrA4mY>+gQMSN%SQ{g-L!t1F3DSA~|my)~6xuA*U? z@9b$()sK&*s;AxDdSyjqb1S!a(IHOt4>ywgFRqE)9CY9K>@3sO8_d4nudk1*`wDa@j9MiJxjc?Q&HenU|Ltrk)b%vwEc=SNr9nSMJ8V zySr?@UJ1Ta`FyU=ER)VYS!<)@V?AEEo2`PGCUae18LS>x^U*bL-_Nvl`+j9vmA*Q{ zt-oi&>kURlXAF-UBp>6++x^z;Siijga=*D1|9(C%mYo)o9J{;h>DBP~r?;}#r+#^H zvE==|x!2>W*9P5wb91wL{=T1T%5FUgFD@+n^6u{J%Fktc7v`!OtTg%i>ud7AKR;tC z9=6V@ez)_>>+Ai0{``q)pE}X5_Lo8VyBNK_UxL{9<$Uh%tBu@{;JEJaq^vh*jL)YW zY+~h+v6x_d&Z3!-neD^7-S5Mqs?&}waBPm)k|AhY_2t2oV86r<4-W46|L^zIYiXs6 zJ!OJcW?frzazo-_i|==eXWCR6-Q89Cc*|wK)1?uTD+3p^J)d81_k2z<-}ZY|+Uj#l zgqqL&X8gS+XWr`zOJ=PKT`eXaUt{=uZn>QKy$a>yvgI;=e|`1VU6-FGp1$+t-&0Wm z+w)@G`sL1ESm->{Ad$&ku2NY>kKL^)snH zGgpPLmzy42CfO~npLV#7cPF2_(1OInZJ_km$}PU^`=M8ib2smi-MQH8`;BCNHQ!lB z{`~wr)3(}-;pow$qCdB+lKpyM$*DDQduM5{-!sXw_}P-KGiR1PGf-*JHd?tQ@2=Il zU9YsJ=|;QFcII34W=4wohN7ol>vlZi64Q&Bq4n#?-S(8ty2jc3Uv3BPUFtpEsOn3G z-M=5n3O!11&Xm1NSHJ3%n5Z~e-G5o^?y@T@0-GZ@@3UFxVECb?FW>cc_udsNI&SCh zpSvyh_NL0uX>L6d8xKF%-n~sXdRxI^Uh{$<58E&AC`?W}Hz)FCZr+_86XXAVn!Y9f z{=8;>yBRMpFAuMpeYLSFA!y~i%4d>o{PKRA)6UK?OlEs~d;9at{`S7QdS%~NTJrE4 zYkv+2GfqF3^5et9H`{LKfl{wb?U##tz7!dy1$*V${CcstN5*o}wYAZoFL~=voIXAL z*F&5eyEZ*ENd_V#vgK){3a^R4mb|>w`tI)T$@AyOzdV_Jc9v;O$wk*MZ*ETh z_xHDP{l7o4MwOsoS~#cd?X8Pjv%{aAo$bClY;BQjz_G6G?#%1!WanC!r=6Q)35xOS zik_y=-)+ggJuTSZcIux$HQ#Qg&-cpzJlWrFVeIa*Ikn$ziin78xE@y>S~dIXOraSe zE7H!++L(1!i;Z6{CT;GaLx;3_G>oIS=Pk{=ysYNW$K!MA|NTt8mVLFV{!^dD8ZPC@ zuTFJ$XWrbTdU~4f?L7b5%ga8+6sG>ZwkFcKoljOnL*v1l&FA$t-~09Twf35`uY5Rt zv_dBF%cU1-%@f{L8ptH95aXx%R$Vc4(T*K6%`@L4$X)(448L0C#RgN zS~QaX%gHT8v(0kPF}8(7nM{%}&AOtY(tJN{>CHd9v!b0W?=3&zc;KyW)RrG?zG3yC zO5o1llQG8w+A3+pR0{& zid`KZN}7$GB#|$DWR#SwS03#a4_+U)H>Q2!M#cZ;Gnn~p6dwQbN>Ea=)+|r|{4BqS z>)5KN@1Cw&&!Q%}%x|uh^F~Yd-ebS#o1(oGxzwX?SEBAtC=VrbFrGOWVRrEzgT(TTb{btF6@1 zZtP51Ub&~!qfY}gcIE8gxUN~?=E=P?Jylf=CKm0eIddcRz^0hvib~+|aL%RJ#>17A zI+qY3KBZ3Y$Sz@Z-xHAvN=izSD`xMSJnw+rSw|2r@}j^ZPik&<|I5;>sYB*9l z7#J8h3p^r=85sD~K$vmSd(}S-3=EPbt`Q}{`DrEPiAAXl<>lpinR(g8$%zH2dih1^ zv)|cBF)%1Fc)B=-RLprhx4P!+*Z&9RzfaUVId^N(>NnG@<6GiiybjwHAr!0f>bL8u zrFXV=ZPA~txpQg|*HfXbK}FdjM^(ya_b&3~kUo@?7PsHtZvN&z%iHH>7N09CyLbNh z;n=eoV`#Z{Fonu1=%J4gh`TQL1$*rTf?E?YJ6nBJ5i)doig`2}1X zcq0^*E-tGrf1vsxQt+qk{PMe8HEb>2C#XR~$V zwgdMadOH5(&boeR1!s=n#A2_Nvwh2dyF6JDv}&bhu+4`F9Xe)zS((;0&Q;oUJW63{ zi1q@;2{~=0M-S#}z52r1$M|1t;%cvzvl|W`D7^fSy+`Q3Kf}_H>IWt80mnT21t3c7i#z2}%2&7a(G^FW;O zK9<`DTHSkO{YDcaEMcJmyoin{P_m{13&)fv6)#!r|};WUy)LJ^O4;Howi5I8Q;%-HrG`} z(1M{P*z4+%6CTqU=S~UwYGBl~=b!rahZ7btcX+JoI3qOiH=})mU0cyN2CW(A{%!g+ ziD}BA6THPix7%(?8Z$9!&E9`}%^`oG#jjeFIYlqYbA@_ldmep6?mTw08xaa@XAIp}93oGnC7rM{(=fWx|YQGrxb2 zsLXA>c+al?VjtUzynpxdl~_b1|qMw+j?c%BsTO4)kh|HqPH`2rd{57BE+if?h ze|+}-`ZM=0O4No+8+^%9ab04<&R%u*=!=iGTsEvZ;a*1*wk(uCrg6|-cw)-ZD{Kif zZZ4K<3C#L`yyk4x=kiTKuL66tQsNSiX)WEx=sYE8dqPO-Ddvq5Z-0n4KJ{AJZ(uaN zy+Q3;-DGxw{)^^@p_*4E7k|6NmBFkdGVwC2%+(k*rSK_1-3{S}USHRL`uKRQ533ww zU5Hn0=R`+2)@L)nZIt+{@K0i~ou=2yyAm%qoY2^{IQPp&2mb`^3zEqzas)4UxlHm+ zzuVYvc{z5CcQx*qvxXL_Z1y6f)kS^ zob%ibMgG|o%n#jq|FK|l#3oS#xy3UtUEWe9x44+2XUA{G9SL^%4{xoiwsBi;D6w^^ zyg}Q2gV_$rjh~+x%-){R+0MN4#{Z0s!V_~PG7UI6Sg$da&o&J?^Xi{Y&!js+yZ^Ez zf6+MR`pLRy(_Nj5874p!?Bh!{e*(PxfVI{rCxG!|AyI8>(bJ?A;9#g(_3V*=i)=fK_iU4byd6twTpJv|oPLkc>XqV{c@{kq}Z*OJe%_l^4${xRd?R|4oDt9!`Zp-?AHsR~z z&fZT{Ts&owQ!Cd`YaOMOl#~hc=FQvhEN!vog{XGelQ%avvvRH3@Z$P<`S~@UJQKSE z6Xwg1Twel?O*UgjvPGHB@1A3dUMmCG_x#gQ%D3?5TN)z2pr1MJ72}(`yUp#(<9aJ6 zz1&kH`_DPDq4@c^oo))^g+B_uHSNyxT6vYP;_f@qu6fg@rS05%de57s3Er(m%jGUy z4fJ2Ra;2Zx;v0eUn2x-DdU`r2pnm**|3>x2)-$K`_BdVKys5|8eRcTyb4xrYfB1a* z?Uuymv$M^Ob8nf1cLcFMIA{I-$=2&}r^`E^Oj7lZ*j2Jp`-#T1DLRppJSVFO%E-)F zzI(E|zfr*h2XoJ-HaahNWL;g=(%x=8rEjm(MeivZj1BYW%RfHezubSmT}x|g;ND$t zeciZrJ-f~q#Hba%?o5ZEvV>WVg#P|NMo&-Ow6c;bdwVPOa!m5RqGB3B4y}kAE z{{Mg1chxVuAs`{)QBz~%rTK2xYrWlNuJY((t9zdoM{UjW znQv#i`v3bZ-eSA?&ZJ3UQT*~)6x(Qfg}3mlpE{dmN^{q)5(k;d27Mj!8y zG_H8uYo2j=8SiYf+*9`#tNE`AS?LrKBC@;et&*kX%!USrW&ZQu70MR;OpHya`S


8T>0ze^2#3% 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 N;OXk;vd$@?2>|-^87=?- literal 0 HcmV?d00001 diff --git a/akka-docs-dev/rst/images/composition.svg b/akka-docs-dev/rst/images/composition.svg new file mode 100644 index 0000000000..d810af5c6a --- /dev/null +++ b/akka-docs-dev/rst/images/composition.svg @@ -0,0 +1,6771 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Source + Sink + Flow + Fan-In + Fan-Out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Composite Source + + + RunnableGraph + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Composite Flow + + + + + + + + + + + + + + + + + + + + + + + + + + Composite Sink + + Nested Source + Nested Sink + Nested Flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RunnableGraph + + + Nested Source + Nested Sink + Nested Flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Keep.left + Keep.right + Keep.both + Combiner f + + + + + + + + + + + + + + + + + + + + + + + Composite Flow (from Sink and Source) + Sink + Source + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Feedback loop + + + + + + + + + + + + + + + + + + RunnableGraph + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PartialGraph + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PartialGraph + + + + + + + + + + Shape of the Graph(in this case it looks like a Flow) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Source + Flow + Sink + + + + + + + + + + + + + + + + Materializer Defaultsand top level Attributes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BidiFlow + + + + + + + + + + + + Composite BidiFlow + Sink + + + A + B + C + D + E + F + G + + + + + + + + + + + + + + filter + + single + map + filter + map + fold + nestedSource + nestedSink + nestedFlow + B + C + D + E + F + + diff --git a/akka-docs-dev/rst/java/stream-customize.rst b/akka-docs-dev/rst/java/stream-customize.rst index 536f7b1246..e74810e650 100644 --- a/akka-docs-dev/rst/java/stream-customize.rst +++ b/akka-docs-dev/rst/java/stream-customize.rst @@ -330,11 +330,11 @@ All of the above custom stages (linear or graph) provide a few simple guarantees - The state encapsulated by these classes can be safely modified from the provided callbacks, without any further synchronization. -In essence, the above guarantees are similar to what :class:`Actor`s provide, if one thinks of the state of a custom +In essence, the above guarantees are similar to what :class:`Actor` s provide, if one thinks of the state of a custom stage as state of an actor, and the callbacks as the ``receive`` block of the actor. .. warning:: -It is **not safe** to access the state of any custom stage outside of the callbacks that it provides, just like it + It is **not safe** to access the state of any custom stage outside of the callbacks that it provides, just like it is unsafe to access the state of an actor from the outside. This means that Future callbacks should **not close over** internal state of custom stages because such access can be concurrent with the provided callbacks, leading to undefined behavior. \ No newline at end of file diff --git a/akka-docs-dev/rst/scala/code/docs/stream/CompositionDocSpec.scala b/akka-docs-dev/rst/scala/code/docs/stream/CompositionDocSpec.scala new file mode 100644 index 0000000000..9f6b35fb79 --- /dev/null +++ b/akka-docs-dev/rst/scala/code/docs/stream/CompositionDocSpec.scala @@ -0,0 +1,241 @@ +package docs.stream + +import akka.stream._ +import akka.stream.scaladsl.Tcp.OutgoingConnection +import akka.stream.scaladsl._ +import akka.stream.testkit.AkkaSpec +import akka.util.ByteString + +import scala.concurrent.{ Future, Promise } + +class CompositionDocSpec extends AkkaSpec { + + implicit val ec = system.dispatcher + implicit val mat = ActorMaterializer() + + "nonnested flow" in { + //#non-nested-flow + Source.single(0) + .map(_ + 1) + .filter(_ != 0) + .map(_ - 2) + .to(Sink.fold(0)(_ + _)) + + // ... where is the nesting? + //#non-nested-flow + } + + "nested flow" in { + //#nested-flow + val nestedSource = + Source.single(0) // An atomic source + .map(_ + 1) // an atomic processing stage + .named("nestedSource") // wraps up the current Source and gives it a name + + val nestedFlow = + Flow[Int].filter(_ != 0) // an atomic processing stage + .map(_ - 2) // another atomic processing stage + .named("nestedFlow") // wraps up the Flow, and gives it a name + + val nestedSink = + nestedFlow.to(Sink.fold(0)(_ + _)) // wire an atomic sink to the nestedFlow + .named("nestedSink") // wrap it up + + // Create a RunnableGraph + val runnableGraph = nestedSource.to(nestedSink) + //#nested-flow + } + + "reusing components" in { + val nestedSource = + Source.single(0) // An atomic source + .map(_ + 1) // an atomic processing stage + .named("nestedSource") // wraps up the current Source and gives it a name + + val nestedFlow = + Flow[Int].filter(_ != 0) // an atomic processing stage + .map(_ - 2) // another atomic processing stage + .named("nestedFlow") // wraps up the Flow, and gives it a name + + val nestedSink = + nestedFlow.to(Sink.fold(0)(_ + _)) // wire an atomic sink to the nestedFlow + .named("nestedSink") // wrap it up + + //#reuse + // Create a RunnableGraph from our components + val runnableGraph = nestedSource.to(nestedSink) + + // Usage is uniform, no matter if modules are composite or atomic + val runnableGraph2 = Source.single(0).to(Sink.fold(0)(_ + _)) + //#reuse + } + + "complex graph" in { + // format: OFF + //#complex-graph + import FlowGraph.Implicits._ + FlowGraph.closed() { implicit builder => + val A: Outlet[Int] = builder.add(Source.single(0)) + val B: UniformFanOutShape[Int, Int] = builder.add(Broadcast[Int](2)) + val C: UniformFanInShape[Int, Int] = builder.add(Merge[Int](2)) + val D: FlowShape[Int, Int] = builder.add(Flow[Int].map(_ + 1)) + val E: UniformFanOutShape[Int, Int] = builder.add(Balance[Int](2)) + val F: UniformFanInShape[Int, Int] = builder.add(Merge[Int](2)) + val G: Inlet[Any] = builder.add(Sink.foreach(println)) + + C <~ F + A ~> B ~> C ~> F + B ~> D ~> E ~> F + E ~> G + } + //#complex-graph + + //#complex-graph-alt + import FlowGraph.Implicits._ + FlowGraph.closed() { implicit builder => + val B = builder.add(Broadcast[Int](2)) + val C = builder.add(Merge[Int](2)) + val E = builder.add(Balance[Int](2)) + val F = builder.add(Merge[Int](2)) + + Source.single(0) ~> B.in; B.out(0) ~> C.in(1); C.out ~> F.in(0) + C.in(0) <~ F.out + + B.out(1).map(_ + 1) ~> E.in; E.out(0) ~> F.in(1) + E.out(1) ~> Sink.foreach(println) + } + //#complex-graph-alt + // format: ON + } + + "partial graph" in { + // format: OFF + //#partial-graph + import FlowGraph.Implicits._ + val partial = FlowGraph.partial() { implicit builder => + val B = builder.add(Broadcast[Int](2)) + val C = builder.add(Merge[Int](2)) + val E = builder.add(Balance[Int](2)) + val F = builder.add(Merge[Int](2)) + + C <~ F + B ~> C ~> F + B ~> Flow[Int].map(_ + 1) ~> E ~> F + FlowShape(B.in, E.out(1)) + }.named("partial") + //#partial-graph + // format: ON + + //#partial-use + Source.single(0).via(partial).to(Sink.ignore) + //#partial-use + + // format: OFF + //#partial-flow-dsl + // Convert the partial graph of FlowShape to a Flow to get + // access to the fluid DSL (for example to be able to call .filter()) + val flow = Flow.wrap(partial) + + // Simple way to create a graph backed Source + val source = Source() { implicit builder => + val merge = builder.add(Merge[Int](2)) + Source.single(0) ~> merge + Source(List(2, 3, 4)) ~> merge + + // Exposing exactly one output port + merge.out + } + + // Building a Sink with a nested Flow, using the fluid DSL + val sink = { + val nestedFlow = Flow[Int].map(_ * 2).drop(10).named("nestedFlow") + nestedFlow.to(Sink.head) + } + + // Putting all together + val closed = source.via(flow.filter(_ > 1)).to(sink) + //#partial-flow-dsl + // format: ON + } + + "closed graph" in { + //#embed-closed + val closed1 = Source.single(0).to(Sink.foreach(println)) + val closed2 = FlowGraph.closed() { implicit builder => + val embeddedClosed: ClosedShape = builder.add(closed1) + } + //#embed-closed + } + + "materialized values" in { + //#mat-combine-1 + // Materializes to Promise[Unit] (red) + val source: Source[Int, Promise[Unit]] = Source.lazyEmpty[Int] + + // Materializes to Unit (black) + val flow1: Flow[Int, Int, Unit] = Flow[Int].take(100) + + // Materializes to Promise[Unit] (red) + val nestedSource: Source[Int, Promise[Unit]] = + source.viaMat(flow1)(Keep.left).named("nestedSource") + //#mat-combine-1 + + //#mat-combine-2 + // Materializes to Unit (orange) + val flow2: Flow[Int, ByteString, Unit] = Flow[Int].map { i => ByteString(i.toString) } + + // Materializes to Future[OutgoingConnection] (yellow) + val flow3: Flow[ByteString, ByteString, Future[OutgoingConnection]] = + Tcp().outgoingConnection("localhost", 8080) + + // Materializes to Future[OutgoingConnection] (yellow) + val nestedFlow: Flow[Int, ByteString, Future[OutgoingConnection]] = + flow2.viaMat(flow3)(Keep.right).named("nestedFlow") + //#mat-combine-2 + + //#mat-combine-3 + // Materializes to Future[String] (green) + val sink: Sink[ByteString, Future[String]] = Sink.fold("")(_ + _.utf8String) + + // Materializes to (Future[OutgoingConnection], Future[String]) (blue) + val nestedSink: Sink[Int, (Future[OutgoingConnection], Future[String])] = + nestedFlow.toMat(sink)(Keep.both) + //#mat-combine-3 + + //#mat-combine-4 + case class MyClass(private val p: Promise[Unit], conn: OutgoingConnection) { + def close() = p.success(()) + } + + def f(p: Promise[Unit], + rest: (Future[OutgoingConnection], Future[String])): Future[MyClass] = { + + val connFuture = rest._1 + connFuture.map(MyClass(p, _)) + } + + // Materializes to Future[MyClass] (purple) + val runnableGraph: RunnableGraph[Future[MyClass]] = + nestedSource.toMat(nestedSink)(f) + //#mat-combine-4 + } + + "attributes" in { + //#attributes-inheritance + import Attributes._ + val nestedSource = + Source.single(0) + .map(_ + 1) + .named("nestedSource") // Wrap, no inputBuffer set + + val nestedFlow = + Flow[Int].filter(_ != 0) + .via(Flow[Int].map(_ - 2).withAttributes(inputBuffer(4, 4))) // override + .named("nestedFlow") // Wrap, no inputBuffer set + + val nestedSink = + nestedFlow.to(Sink.fold(0)(_ + _)) // wire an atomic sink to the nestedFlow + .withAttributes(name("nestedSink") and inputBuffer(3, 3)) // override + //#attributes-inheritance + } +} diff --git a/akka-docs-dev/rst/scala/stream-composition.rst b/akka-docs-dev/rst/scala/stream-composition.rst new file mode 100644 index 0000000000..5f7bb77dde --- /dev/null +++ b/akka-docs-dev/rst/scala/stream-composition.rst @@ -0,0 +1,312 @@ +.. _composition-scala: + +Modularity, Composition and Hierarchy +===================================== + +Akka Streams provide a uniform model of stream processing graphs, which allows flexible composition of reusable +components. In this chapter we show how these look like from the conceptual and API perspective, demonstrating +the modularity aspects of the library. + +Basics of composition and modularity +------------------------------------ + +Every processing stage used in Akka Streams can be imagined as a "box" with input and output ports where elements to +be processed arrive and leave the stage. In this view, a :class:`Source` is nothing else than a "box" with a single +output port, or, a :class:`BidiFlow` is a "box" with exactly two input and two output ports. In the figure below +we illustrate the most common used stages viewed as "boxes". + +| + +.. image:: ../images/compose_shapes.png + :align: center + +| + +The *linear* stages are :class:`Source`, :class:`Sink` +and :class:`Flow`, as these can be used to compose strict chains of processing stages. +Fan-in and Fan-out stages have usually multiple input or multiple output ports, therefore they allow to build +more complex graph layouts, not just chains. :class:`BidiFlow` stages are usually useful in IO related tasks, where +there are input and output channels to be handled. Due to the specific shape of :class:`BidiFlow` it is easy to +stack them on top of each other to build a layered protocol for example. The ``TLS`` support in Akka is for example +implemented as a :class:`BidiFlow`. + +These reusable components already allow the creation of complex processing networks. What we +have seen so far does not implement modularity though. It is desirable for example to package up a larger graph entity into +a reusable component which hides its internals only exposing the ports that are meant to the users of the module +to interact with. One good example is the ``Http`` server component, which is encoded internally as a +:class:`BidiFlow` which interfaces with the client TCP connection using an input-output port pair accepting and sending +:class:`ByteString` s, while its upper ports emit and receive :class:`HttpRequest` and :class:`HttpResponse` instances. + +The following figure demonstrates various composite stages, that contain various other type of stages internally, but +hiding them behind a *shape* that looks like a :class:`Source`, :class:`Flow`, etc. + +| + +.. image:: ../images/compose_composites.png + :align: center + +| + +One interesting example above is a :class:`Flow` which is composed of a disconnected :class:`Sink` and :class:`Source`. +This can be achieved by using the ``wrap()`` constructor method on :class:`Flow` which takes the two parts as +parameters. + +The example :class:`BidiFlow` demonstrates that internally a module can be of arbitrary complexity, and the exposed +ports can be wired in flexible ways. The only constraint is that all the ports of enclosed modules must be either +connected to each other, or exposed as interface ports, and the number of such ports needs to match the requirement +of the shape, for example a :class:`Source` allows only one exposed output port, the rest of the internal ports must +be properly connected. + +These mechanics allow arbitrary nesting of modules. For example the following figure demonstrates a :class:`RunnableGraph` +that is built from a composite :class:`Source` and a composite :class:`Sink` (which in turn contains a composite +:class:`Flow`). + +| + +.. image:: ../images/compose_nested_flow.png + :align: center + +| + +The above diagram contains one more shape that we have not seen yet, which is called :class:`RunnableGraph`. It turns +out, that if we wire all exposed ports together, so that no more open ports remain, we get a module that is *closed*. +This is what the :class:`RunnableGraph` class represents. This is the shape that a :class:`Materializer` can take +and turn into a network of running entities that perform the task described. In fact, a :class:`RunnableGraph` is a +module itself, and (maybe somewhat surprisingly) it can be used as part of larger graphs. It is rarely useful to embed +a closed graph shape in a larger graph (since it becomes an isolated island as there are no open port for communication +with the rest of the graph), but this demonstrates the uniform underlying model. + +If we try to build a code snippet that corresponds to the above diagram, our first try might look like this: + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#non-nested-flow + +It is clear however that there is no nesting present in our first attempt, since the library cannot figure out +where we intended to put composite module boundaries, it is our responsibility to do that. If we are using the +DSL provided by the :class:`Flow`, :class:`Source`, :class:`Sink` classes then nesting can be achieved by calling one of the +methods ``withAttributes()`` or ``named()`` (where the latter is just a shorthand for adding a name attribute). + +The following code demonstrates how to achieve the desired nesting: + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#nested-flow + +Once we have hidden the internals of our components, they act like any other built-in component of similar shape. If +we hide some of the internals of our composites, the result looks just like if any other predefine component has been +used: + +| + +.. image:: ../images/compose_nested_flow_opaque.png + :align: center + +| + +If we look at usage of built-in components, and our custom components, there is no difference in usage as the code +snippet below demonstrates. + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#reuse + +Composing complex systems +------------------------- + +In the previous section we explored the possibility of composition, and hierarchy, but we stayed away from non-linear, +generalized graph components. There is nothing in Akka Streams though that enforces that stream processing layouts +can only be linear. The DSL for :class:`Source` and friends is optimized for creating such linear chains, as they are +the most common in practice. There is a more advanced DSL for building complex graphs, that can be used if more +flexibility is needed. We will see that the difference between the two DSLs is only on the surface: the concepts they +operate on are uniform across all DSLs and fit together nicely. + +As a first example, let's look at a more complex layout: + +| + +.. image:: ../images/compose_graph.png + :align: center + +| + +The diagram shows a :class:`RunnableGraph` (remember, if there are no unwired ports, the graph is closed, and therefore +can be materialized) that encapsulates a non-trivial stream processing network. It contains fan-in, fan-out stages, +directed and non-directed cycles. The ``closed()`` method of the :class:`FlowGraph` object allows the creation of a +general closed graph. For example the network on the diagram can be realized like this: + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#complex-graph + +In the code above we used the implicit port numbering feature (to make the graph more readable and similar to the diagram) +and we imported :class:`Source` s, :class:`Sink` s and :class:`Flow` s explicitly. It is possible to refer to the ports +explicitly, and it is not necessary to import our linear stages via ``add()``, so another version might look like this: + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#complex-graph-alt + +| + +Similar to the case in the first section, so far we have not considered modularity. We created a complex graph, but +the layout is flat, not modularized. We will modify our example, and create a reusable component with the graph DSL. +The way to do it is to use the ``partial()`` factory method on :class:`FlowGraph`. If we remove the sources and sinks +from the previous example, what remains is a partial graph: + +| + +.. image:: ../images/compose_graph_partial.png + :align: center + +| + +We can recreate a similar graph in code, using the DSL in a similar way than before: + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#partial-graph + +The only new addition is the return value of the builder block, which is a :class:`Shape`. All graphs (including +:class:`Source`, :class:`BidiFlow`, etc) have a shape, which encodes the *typed* ports of the module. In our example +there is exactly one input and output port left, so we can declare it to have a :class:`FlowShape` by returning an +instance of it. While it is possible to create new :class:`Shape` types, it is usually recommended to use one of the +matching built-in ones. + +The resulting graph is already a properly wrapped module, so there is no need to call `named()` to encapsulate the graph, but +it is a good practice to give names to modules to help debugging. + +| + +.. image:: ../images/compose_graph_shape.png + :align: center + +| + +Since our partial graph has the right shape, it can be already used in the simpler, linear DSL: + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#partial-use + +It is not possible to use it as a :class:`Flow` yet, though (i.e. we cannot call ``.filter()`` on it), but :class:`Flow` +has a ``wrap()`` method that just adds the DSL to a :class:`FlowShape`. There are similar methods on :class:`Source`, +:class:`Sink` and :class:`BidiShape`, so it is easy to get back to the simpler DSL if a graph has the right shape. +For convenience, it is also possible to skip the partial graph creation, and use one of the convenience creator methods. +To demonstrate this, we will create the following graph: + +| + +.. image:: ../images/compose_graph_flow.png + :align: center + +| + +The code version of the above closed graph might look like this: + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#partial-flow-dsl + +.. note:: + All graph builder sections check if the resulting graph has all ports connected except the exposed ones and will + throw an exception if this is violated. + +We are still in debt of demonstrating that :class:`RunnableGraph` is a component just like any other, which can +be embedded in graphs. In the following snippet we embed one closed graph in another: + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#embed-closed + +The type of the imported module indicates that the imported module has a :class:`ClosedShape`, and so we are not +able to wire it to anything else inside the enclosing closed graph. Nevertheless, this "island" is embedded properly, +and will be materialized just like any other module that is part of the graph. + +As we have demonstrated, the two DSLs are fully interoperable, as they encode a similar nested structure of "boxes with +ports", it is only the DSLs that differ to be as much powerful as possible on the given abstraction level. It is possible +to embed complex graphs in the fluid DSL, and it is just as easy to import and embed a :class:`Flow`, etc, in a larger, +complex structure. + +We have also seen, that every module has a :class:`Shape` (for example a :class:`Sink` has a :class:`SinkShape`) +independently which DSL was used to create it. This uniform representation enables the rich composability of various +stream processing entities in a convenient way. + +Materialized values +------------------- + +After realizing that :class:`RunnableGraph` is nothing more than a module with no unused ports (it is an island), it becomes clear that +after materialization the only way to communicate with the running stream processing logic is via some side-channel. +This side channel is represented as a *materialized value*. The situation is similar to :class:`Actor` s, where the +:class:`Props` instance describes the actor logic, but it is the call to ``actorOf()`` that creates an actually running +actor, and returns an :class:`ActorRef` that can be used to communicate with the running actor itself. Since the +:class:`Props` can be reused, each call will return a different reference. + +When it comes to streams, each materialization creates a new running network corresponding to the blueprint that was +encoded in the provided :class:`RunnableGraph`. To be able to interact with the running network, each materialization +needs to return a different object that provides the necessary interaction capabilities. In other words, the +:class:`RunnableGraph` can be seen as a factory, which creates: + + * a network of running processing entities, inaccessible from the outside + * a materialized value, optionally providing a controlled interaction capability with the network + +Unlike actors though, each of the processing stages might provide a materialized value, so when we compose multiple +stages or modules, we need to combine the materialized value as well (there are default rules which make this easier, +for example `to()` and `via()` takes care of the most common case of taking the materialized value to the left. +See :ref:`flow-combine-mat-scala` for details). We demonstrate how this works by a code example and a diagram which +graphically demonstrates what is happening. + +The propagation of the individual materialized values from the enclosed modules towards the top will look like this: + +| + +.. image:: ../images/compose_mat.png + :align: center + +| + +To implement the above, first, we create a composite :class:`Source`, where the enclosed :class:`Source` have a +materialized type of :class:`Promise[Unit]`. By using the combiner function ``Keep.left``, the resulting materialized +type is of the nested module (indicated by the color *red* on the diagram): + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#mat-combine-1 + +Next, we create a composite :class:`Flow` from two smaller components. Here, the second enclosed :class:`Flow` has a +materialized type of :class:`Future[OutgoingConnection]`, and we propagate this to the parent by using ``Keep.right`` +as the combiner function (indicated by the color *yellow* on the diagram): + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#mat-combine-2 + +As a third step, we create a composite :class:`Sink`, using our ``nestedFlow`` as a building block. In this snippet, both +the enclosed :class:`Flow` and the folding :class:`Sink` has a materialized value that is interesting for us, so +we use ``Keep.both`` to get a :class:`Pair` of them as the materialized type of ``nestedSink`` (indicated by the color +*blue* on the diagram) + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#mat-combine-3 + +As the last example, we wire together ``nestedSource`` and ``nestedSink`` and we use a custom combiner function to +create a yet another materialized type of the resulting :class:`RunnableGraph`. This combiner function just ignores +the :class:`Future[Sink]` part, and wraps the other two values in a custom case class :class:`MyClass` +(indicated by color *purple* on the diagram): + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#mat-combine-4 + + + +.. note:: + The nested structure in the above example is not necessary for combining the materialized values, it just + demonstrates how the two features work together. See :ref:`flow-combine-mat-scala` for further examples + of combining materialized values without nesting and hierarchy involved. + +Attributes +---------- + +We have seen that we can use ``named()`` to introduce a nesting level in the fluid DSL (and also explicit nesting by using +``partial()`` from :class:`FlowGraph`). Apart from having the effect of adding a nesting level, ``named()`` is actually +a shorthand for calling `withAttributes(Attributes.name("someName"))`. Attributes provide a way to fine-tune certain +aspects of the materialized running entity. For example buffer sizes can be controlled via attributes (see +:ref:`stream-buffers-scala`). When it comes to hierarchic composition, attributes are inherited by nested modules, +unless they override them with a custom value. + +The code below, a modification of an earlier example sets the ``inputBuffer`` attribute on certain modules, but not +on others: + +.. includecode:: code/docs/stream/CompositionDocSpec.scala#attributes-inheritance + +The effect is, that each module inherits the ``inputBuffer`` attribute from its enclosing parent, unless it has +the same attribute explicitly set. ``nestedSource`` gets the default attributes from the materializer itself. ``nestedSink`` +on the other hand has this attribute set, so it will be used by all nested modules. ``nestedFlow`` will inherit from ``nestedSource`` +except the ``map`` stage which has again an explicitly provided attribute overriding the inherited one. + +| + +.. image:: ../images/compose_attributes.png + :align: center + +| + +This diagram illustrates the inheritance process for the example code (representing the materializer default attributes +as the color *red*, the attributes set on ``nestedSink`` as *blue* and the attributes set on ``nestedFlow`` as *green*). + diff --git a/akka-docs-dev/rst/scala/stream-customize.rst b/akka-docs-dev/rst/scala/stream-customize.rst index bfab4e952a..ddf258b382 100644 --- a/akka-docs-dev/rst/scala/stream-customize.rst +++ b/akka-docs-dev/rst/scala/stream-customize.rst @@ -332,11 +332,11 @@ All of the above custom stages (linear or graph) provide a few simple guarantees - The state encapsulated by these classes can be safely modified from the provided callbacks, without any further synchronization. -In essence, the above guarantees are similar to what :class:`Actor`s provide, if one thinks of the state of a custom +In essence, the above guarantees are similar to what :class:`Actor` s provide, if one thinks of the state of a custom stage as state of an actor, and the callbacks as the ``receive`` block of the actor. .. warning:: It is **not safe** to access the state of any custom stage outside of the callbacks that it provides, just like it is unsafe to access the state of an actor from the outside. This means that Future callbacks should **not close over** internal state of custom stages because such access can be concurrent with the provided callbacks, leading to undefined - behavior. \ No newline at end of file + behavior. diff --git a/akka-docs-dev/rst/scala/stream-flows-and-basics.rst b/akka-docs-dev/rst/scala/stream-flows-and-basics.rst index 9ab8de8daa..f7722c32bd 100644 --- a/akka-docs-dev/rst/scala/stream-flows-and-basics.rst +++ b/akka-docs-dev/rst/scala/stream-flows-and-basics.rst @@ -215,6 +215,8 @@ which will be running on the thread pools they have been configured to run on - Reusing *instances* of linear computation stages (Source, Sink, Flow) inside FlowGraphs is legal, yet will materialize that stage multiple times. +.. _flow-combine-mat-scala: + Combining materialized values ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/akka-docs-dev/rst/scala/stream-index.rst b/akka-docs-dev/rst/scala/stream-index.rst index 8839c5f192..6c8ad6ba27 100644 --- a/akka-docs-dev/rst/scala/stream-index.rst +++ b/akka-docs-dev/rst/scala/stream-index.rst @@ -11,6 +11,7 @@ Streams ../stream-design stream-flows-and-basics stream-graphs + stream-composition stream-rate stream-customize stream-integrations From eb74b3ec9d25fe60b1f504bbca969230ae9c06a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Mickevi=C4=8Dius?= Date: Tue, 14 Jul 2015 13:20:46 +0300 Subject: [PATCH 2/2] +doc #17337: java doc samples --- akka-docs-dev/rst/java/stream-composition.rst | 310 ++++++++++++++++++ .../rst/java/stream-flows-and-basics.rst | 2 + akka-docs-dev/rst/java/stream-index.rst | 1 + .../code/docs/stream/CompositionDocSpec.scala | 3 + .../rst/scala/stream-composition.rst | 3 +- 5 files changed, 317 insertions(+), 2 deletions(-) create mode 100644 akka-docs-dev/rst/java/stream-composition.rst diff --git a/akka-docs-dev/rst/java/stream-composition.rst b/akka-docs-dev/rst/java/stream-composition.rst new file mode 100644 index 0000000000..2306c7831f --- /dev/null +++ b/akka-docs-dev/rst/java/stream-composition.rst @@ -0,0 +1,310 @@ +.. _composition-java: + +Modularity, Composition and Hierarchy +===================================== + +Akka Streams provide a uniform model of stream processing graphs, which allows flexible composition of reusable +components. In this chapter we show how these look like from the conceptual and API perspective, demonstrating +the modularity aspects of the library. + +Basics of composition and modularity +------------------------------------ + +Every processing stage used in Akka Streams can be imagined as a "box" with input and output ports where elements to +be processed arrive and leave the stage. In this view, a :class:`Source` is nothing else than a "box" with a single +output port, or, a :class:`BidiFlow` is a "box" with exactly two input and two output ports. In the figure below +we illustrate the most common used stages viewed as "boxes". + +| + +.. image:: ../images/compose_shapes.png + :align: center + +| + +The *linear* stages are :class:`Source`, :class:`Sink` +and :class:`Flow`, as these can be used to compose strict chains of processing stages. +Fan-in and Fan-out stages have usually multiple input or multiple output ports, therefore they allow to build +more complex graph layouts, not just chains. :class:`BidiFlow` stages are usually useful in IO related tasks, where +there are input and output channels to be handled. Due to the specific shape of :class:`BidiFlow` it is easy to +stack them on top of each other to build a layered protocol for example. The ``TLS`` support in Akka is for example +implemented as a :class:`BidiFlow`. + +These reusable components already allow the creation of complex processing networks. What we +have seen so far does not implement modularity though. It is desirable for example to package up a larger graph entity into +a reusable component which hides its internals only exposing the ports that are meant to the users of the module +to interact with. One good example is the ``Http`` server component, which is encoded internally as a +:class:`BidiFlow` which interfaces with the client TCP connection using an input-output port pair accepting and sending +:class:`ByteString` s, while its upper ports emit and receive :class:`HttpRequest` and :class:`HttpResponse` instances. + +The following figure demonstrates various composite stages, that contain various other type of stages internally, but +hiding them behind a *shape* that looks like a :class:`Source`, :class:`Flow`, etc. + +| + +.. image:: ../images/compose_composites.png + :align: center + +| + +One interesting example above is a :class:`Flow` which is composed of a disconnected :class:`Sink` and :class:`Source`. +This can be achieved by using the ``wrap()`` constructor method on :class:`Flow` which takes the two parts as +parameters. + +The example :class:`BidiFlow` demonstrates that internally a module can be of arbitrary complexity, and the exposed +ports can be wired in flexible ways. The only constraint is that all the ports of enclosed modules must be either +connected to each other, or exposed as interface ports, and the number of such ports needs to match the requirement +of the shape, for example a :class:`Source` allows only one exposed output port, the rest of the internal ports must +be properly connected. + +These mechanics allow arbitrary nesting of modules. For example the following figure demonstrates a :class:`RunnableGraph` +that is built from a composite :class:`Source` and a composite :class:`Sink` (which in turn contains a composite +:class:`Flow`). + +| + +.. image:: ../images/compose_nested_flow.png + :align: center + +| + +The above diagram contains one more shape that we have not seen yet, which is called :class:`RunnableGraph`. It turns +out, that if we wire all exposed ports together, so that no more open ports remain, we get a module that is *closed*. +This is what the :class:`RunnableGraph` class represents. This is the shape that a :class:`Materializer` can take +and turn into a network of running entities that perform the task described. In fact, a :class:`RunnableGraph` is a +module itself, and (maybe somewhat surprisingly) it can be used as part of larger graphs. It is rarely useful to embed +a closed graph shape in a larger graph (since it becomes an isolated island as there are no open port for communication +with the rest of the graph), but this demonstrates the uniform underlying model. + +If we try to build a code snippet that corresponds to the above diagram, our first try might look like this: + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#non-nested-flow + +It is clear however that there is no nesting present in our first attempt, since the library cannot figure out +where we intended to put composite module boundaries, it is our responsibility to do that. If we are using the +DSL provided by the :class:`Flow`, :class:`Source`, :class:`Sink` classes then nesting can be achieved by calling one of the +methods ``withAttributes()`` or ``named()`` (where the latter is just a shorthand for adding a name attribute). + +The following code demonstrates how to achieve the desired nesting: + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#nested-flow + +Once we have hidden the internals of our components, they act like any other built-in component of similar shape. If +we hide some of the internals of our composites, the result looks just like if any other predefine component has been +used: + +| + +.. image:: ../images/compose_nested_flow_opaque.png + :align: center + +| + +If we look at usage of built-in components, and our custom components, there is no difference in usage as the code +snippet below demonstrates. + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#reuse + +Composing complex systems +------------------------- + +In the previous section we explored the possibility of composition, and hierarchy, but we stayed away from non-linear, +generalized graph components. There is nothing in Akka Streams though that enforces that stream processing layouts +can only be linear. The DSL for :class:`Source` and friends is optimized for creating such linear chains, as they are +the most common in practice. There is a more advanced DSL for building complex graphs, that can be used if more +flexibility is needed. We will see that the difference between the two DSLs is only on the surface: the concepts they +operate on are uniform across all DSLs and fit together nicely. + +As a first example, let's look at a more complex layout: + +| + +.. image:: ../images/compose_graph.png + :align: center + +| + +The diagram shows a :class:`RunnableGraph` (remember, if there are no unwired ports, the graph is closed, and therefore +can be materialized) that encapsulates a non-trivial stream processing network. It contains fan-in, fan-out stages, +directed and non-directed cycles. The ``closed()`` method of the :class:`FlowGraph` factory object allows the creation of a +general closed graph. For example the network on the diagram can be realized like this: + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#complex-graph + +In the code above we used the implicit port numbering feature to make the graph more readable and similar to the diagram. +It is possible to refer to the ports, so another version might look like this: + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#complex-graph-alt + +| + +Similar to the case in the first section, so far we have not considered modularity. We created a complex graph, but +the layout is flat, not modularized. We will modify our example, and create a reusable component with the graph DSL. +The way to do it is to use the ``partial()`` method on :class:`FlowGraph` factory. If we remove the sources and sinks +from the previous example, what remains is a partial graph: + +| + +.. image:: ../images/compose_graph_partial.png + :align: center + +| + +We can recreate a similar graph in code, using the DSL in a similar way than before: + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#partial-graph + +The only new addition is the return value of the builder block, which is a :class:`Shape`. All graphs (including +:class:`Source`, :class:`BidiFlow`, etc) have a shape, which encodes the *typed* ports of the module. In our example +there is exactly one input and output port left, so we can declare it to have a :class:`FlowShape` by returning an +instance of it. While it is possible to create new :class:`Shape` types, it is usually recommended to use one of the +matching built-in ones. + +The resulting graph is already a properly wrapped module, so there is no need to call `named()` to encapsulate the graph, but +it is a good practice to give names to modules to help debugging. + +| + +.. image:: ../images/compose_graph_shape.png + :align: center + +| + +Since our partial graph has the right shape, it can be already used in the simpler, linear DSL: + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#partial-use + +It is not possible to use it as a :class:`Flow` yet, though (i.e. we cannot call ``.filter()`` on it), but :class:`Flow` +has a ``wrap()`` method that just adds the DSL to a :class:`FlowShape`. There are similar methods on :class:`Source`, +:class:`Sink` and :class:`BidiShape`, so it is easy to get back to the simpler DSL if a graph has the right shape. +For convenience, it is also possible to skip the partial graph creation, and use one of the convenience creator methods. +To demonstrate this, we will create the following graph: + +| + +.. image:: ../images/compose_graph_flow.png + :align: center + +| + +The code version of the above closed graph might look like this: + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#partial-flow-dsl + +.. note:: + All graph builder sections check if the resulting graph has all ports connected except the exposed ones and will + throw an exception if this is violated. + +We are still in debt of demonstrating that :class:`RunnableGraph` is a component just like any other, which can +be embedded in graphs. In the following snippet we embed one closed graph in another: + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#embed-closed + +The type of the imported module indicates that the imported module has a :class:`ClosedShape`, and so we are not +able to wire it to anything else inside the enclosing closed graph. Nevertheless, this "island" is embedded properly, +and will be materialized just like any other module that is part of the graph. + +As we have demonstrated, the two DSLs are fully interoperable, as they encode a similar nested structure of "boxes with +ports", it is only the DSLs that differ to be as much powerful as possible on the given abstraction level. It is possible +to embed complex graphs in the fluid DSL, and it is just as easy to import and embed a :class:`Flow`, etc, in a larger, +complex structure. + +We have also seen, that every module has a :class:`Shape` (for example a :class:`Sink` has a :class:`SinkShape`) +independently which DSL was used to create it. This uniform representation enables the rich composability of various +stream processing entities in a convenient way. + +Materialized values +------------------- + +After realizing that :class:`RunnableGraph` is nothing more than a module with no unused ports (it is an island), it becomes clear that +after materialization the only way to communicate with the running stream processing logic is via some side-channel. +This side channel is represented as a *materialized value*. The situation is similar to :class:`Actor` s, where the +:class:`Props` instance describes the actor logic, but it is the call to ``actorOf()`` that creates an actually running +actor, and returns an :class:`ActorRef` that can be used to communicate with the running actor itself. Since the +:class:`Props` can be reused, each call will return a different reference. + +When it comes to streams, each materialization creates a new running network corresponding to the blueprint that was +encoded in the provided :class:`RunnableGraph`. To be able to interact with the running network, each materialization +needs to return a different object that provides the necessary interaction capabilities. In other words, the +:class:`RunnableGraph` can be seen as a factory, which creates: + + * a network of running processing entities, inaccessible from the outside + * a materialized value, optionally providing a controlled interaction capability with the network + +Unlike actors though, each of the processing stages might provide a materialized value, so when we compose multiple +stages or modules, we need to combine the materialized value as well (there are default rules which make this easier, +for example `to()` and `via()` takes care of the most common case of taking the materialized value to the left. +See :ref:`flow-combine-mat-scala` for details). We demonstrate how this works by a code example and a diagram which +graphically demonstrates what is happening. + +The propagation of the individual materialized values from the enclosed modules towards the top will look like this: + +| + +.. image:: ../images/compose_mat.png + :align: center + +| + +To implement the above, first, we create a composite :class:`Source`, where the enclosed :class:`Source` have a +materialized type of :class:`Promise`. By using the combiner function ``Keep.left()``, the resulting materialized +type is of the nested module (indicated by the color *red* on the diagram): + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#mat-combine-1 + +Next, we create a composite :class:`Flow` from two smaller components. Here, the second enclosed :class:`Flow` has a +materialized type of :class:`Future`, and we propagate this to the parent by using ``Keep.right()`` +as the combiner function (indicated by the color *yellow* on the diagram): + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#mat-combine-2 + +As a third step, we create a composite :class:`Sink`, using our ``nestedFlow`` as a building block. In this snippet, both +the enclosed :class:`Flow` and the folding :class:`Sink` has a materialized value that is interesting for us, so +we use ``Keep.both()`` to get a :class:`Pair` of them as the materialized type of ``nestedSink`` (indicated by the color +*blue* on the diagram) + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#mat-combine-3 + +As the last example, we wire together ``nestedSource`` and ``nestedSink`` and we use a custom combiner function to +create a yet another materialized type of the resulting :class:`RunnableGraph`. This combiner function just ignores +the :class:`Future` part, and wraps the other two values in a custom case class :class:`MyClass` +(indicated by color *purple* on the diagram): + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#mat-combine-4a + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#mat-combine-4b + +.. note:: + The nested structure in the above example is not necessary for combining the materialized values, it just + demonstrates how the two features work together. See :ref:`flow-combine-mat-java` for further examples + of combining materialized values without nesting and hierarchy involved. + +Attributes +---------- + +We have seen that we can use ``named()`` to introduce a nesting level in the fluid DSL (and also explicit nesting by using +``partial()`` from :class:`FlowGraph`). Apart from having the effect of adding a nesting level, ``named()`` is actually +a shorthand for calling ``withAttributes(Attributes.name("someName"))``. Attributes provide a way to fine-tune certain +aspects of the materialized running entity. For example buffer sizes can be controlled via attributes (see +:ref:`stream-buffers-scala`). When it comes to hierarchic composition, attributes are inherited by nested modules, +unless they override them with a custom value. + +The code below, a modification of an earlier example sets the ``inputBuffer`` attribute on certain modules, but not +on others: + +.. includecode:: ../../../akka-samples/akka-docs-java-lambda/src/test/java/docs/stream/CompositionDocTest.java#attributes-inheritance + +The effect is, that each module inherits the ``inputBuffer`` attribute from its enclosing parent, unless it has +the same attribute explicitly set. ``nestedSource`` gets the default attributes from the materializer itself. ``nestedSink`` +on the other hand has this attribute set, so it will be used by all nested modules. ``nestedFlow`` will inherit from ``nestedSource`` +except the ``map`` stage which has again an explicitly provided attribute overriding the inherited one. + +| + +.. image:: ../images/compose_attributes.png + :align: center + +| + +This diagram illustrates the inheritance process for the example code (representing the materializer default attributes +as the color *red*, the attributes set on ``nestedSink`` as *blue* and the attributes set on ``nestedFlow`` as *green*). diff --git a/akka-docs-dev/rst/java/stream-flows-and-basics.rst b/akka-docs-dev/rst/java/stream-flows-and-basics.rst index c41bf266e1..89abd49f0f 100644 --- a/akka-docs-dev/rst/java/stream-flows-and-basics.rst +++ b/akka-docs-dev/rst/java/stream-flows-and-basics.rst @@ -212,6 +212,8 @@ which will be running on the thread pools they have been configured to run on - Reusing *instances* of linear computation stages (Source, Sink, Flow) inside FlowGraphs is legal, yet will materialize that stage multiple times. +.. _flow-combine-mat-java: + Combining materialized values ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/akka-docs-dev/rst/java/stream-index.rst b/akka-docs-dev/rst/java/stream-index.rst index 07eedfaf96..4771464d55 100644 --- a/akka-docs-dev/rst/java/stream-index.rst +++ b/akka-docs-dev/rst/java/stream-index.rst @@ -11,6 +11,7 @@ Streams ../stream-design stream-flows-and-basics stream-graphs + stream-composition stream-rate stream-customize stream-integrations diff --git a/akka-docs-dev/rst/scala/code/docs/stream/CompositionDocSpec.scala b/akka-docs-dev/rst/scala/code/docs/stream/CompositionDocSpec.scala index 9f6b35fb79..92043e2a8b 100644 --- a/akka-docs-dev/rst/scala/code/docs/stream/CompositionDocSpec.scala +++ b/akka-docs-dev/rst/scala/code/docs/stream/CompositionDocSpec.scala @@ -1,3 +1,6 @@ +/** + * Copyright (C) 2015 Typesafe Inc. + */ package docs.stream import akka.stream._ diff --git a/akka-docs-dev/rst/scala/stream-composition.rst b/akka-docs-dev/rst/scala/stream-composition.rst index 5f7bb77dde..974507c3b2 100644 --- a/akka-docs-dev/rst/scala/stream-composition.rst +++ b/akka-docs-dev/rst/scala/stream-composition.rst @@ -285,7 +285,7 @@ Attributes We have seen that we can use ``named()`` to introduce a nesting level in the fluid DSL (and also explicit nesting by using ``partial()`` from :class:`FlowGraph`). Apart from having the effect of adding a nesting level, ``named()`` is actually -a shorthand for calling `withAttributes(Attributes.name("someName"))`. Attributes provide a way to fine-tune certain +a shorthand for calling ``withAttributes(Attributes.name("someName"))``. Attributes provide a way to fine-tune certain aspects of the materialized running entity. For example buffer sizes can be controlled via attributes (see :ref:`stream-buffers-scala`). When it comes to hierarchic composition, attributes are inherited by nested modules, unless they override them with a custom value. @@ -309,4 +309,3 @@ except the ``map`` stage which has again an explicitly provided attribute overri This diagram illustrates the inheritance process for the example code (representing the materializer default attributes as the color *red*, the attributes set on ``nestedSink`` as *blue* and the attributes set on ``nestedFlow`` as *green*). -