DOC: internal: update the muxes doc to mention the stconn
The stream connector replaced the conn_stream and the sc_conn_io_cb()
function appeared. There's no place there to mention the endpoint
descriptor, but a separate diagram showing the relation between stream
and endpoint via the connector would be nice.
diff --git a/doc/internals/muxes.fig b/doc/internals/muxes.fig
index 2c19015..babdd55 100644
--- a/doc/internals/muxes.fig
+++ b/doc/internals/muxes.fig
@@ -1,4 +1,4 @@
-#FIG 3.2 Produced by xfig version 2.4
+#FIG 3.2 Produced by xfig version 3.2.8b
Landscape
Center
Inches
@@ -79,7 +79,7 @@
6 11925 10725 13875 11475
2 4 0 3 0 35 50 -1 20 0.000 1 0 7 0 0 5
13800 11400 12000 11400 12000 10800 13800 10800 13800 11400
-4 1 0 49 -1 4 18 0.0000 4 270 1410 12900 11175 Transport\001
+4 1 0 49 -1 4 18 0.0000 4 285 1335 12900 11175 Transport\001
-6
6 6600 1200 10050 1800
2 1 0 4 35 -1 48 -1 -1 0.000 0 0 -1 0 0 4
@@ -92,7 +92,7 @@
9525 1261 9525 1761
2 1 0 2 35 -1 47 -1 -1 0.000 0 0 -1 0 0 2
9300 1261 9300 1761
-4 1 0 46 -1 4 16 0.0000 4 210 1620 8025 1575 channel buf\001
+4 1 0 46 -1 4 16 0.0000 4 210 1605 8025 1575 channel buf\001
-6
6 12375 8100 12900 8700
2 1 0 2 35 -1 47 -1 -1 0.000 0 0 -1 0 0 2
@@ -168,7 +168,7 @@
-6
6 11100 11700 13050 12150
1 1 0 4 20 40 49 -1 20 0.000 1 0.0000 11400 11925 225 150 11400 11925 11625 12075
-4 0 0 49 -1 4 12 0.0000 4 180 1170 11850 12000 I/O tasklet\001
+4 0 0 49 -1 4 12 0.0000 4 165 960 11850 12000 I/O tasklet\001
-6
6 11100 12300 11700 12600
2 1 0 2 35 -1 47 -1 -1 0.000 0 0 -1 0 0 2
@@ -199,12 +199,12 @@
1 1 0 4 37 36 49 -1 20 0.000 1 0.0000 1719 5173 583 250 1719 5173 2302 4923
1 1 0 4 37 36 49 -1 20 0.000 1 0.0000 5325 5175 583 250 5325 5175 5908 4925
1 1 0 4 10 11 45 -1 20 0.000 1 0.0000 4488 8082 612 250 4488 8082 5100 8082
-1 1 0 4 20 40 49 -1 20 0.000 1 0.0000 8400 600 900 210 8400 600 9300 600
1 1 0 4 10 11 49 -1 20 0.000 1 0.0000 12333 7025 417 250 12333 7025 12750 7025
1 1 0 4 20 40 49 -1 20 0.000 1 0.0000 12392 9240 808 210 12392 9240 13200 9240
1 1 0 4 20 40 49 -1 20 0.000 1 0.0000 3167 9240 808 210 3167 9240 3975 9240
1 1 0 4 37 36 49 -1 20 0.000 1 0.0000 1800 11925 225 150 1800 11925 2025 12075
1 1 0 4 10 11 45 -1 20 0.000 1 0.0000 6600 11925 225 150 6600 11925 6825 12075
+1 1 0 4 20 40 49 -1 20 0.000 1 0.0000 8400 600 900 210 8400 600 9300 600
2 1 1 1 0 7 49 -1 -1 4.000 1 0 -1 0 0 2
2550 3300 2550 6150
2 1 1 1 0 7 49 -1 -1 4.000 1 0 -1 0 0 2
@@ -213,7 +213,7 @@
6300 3300 6300 6150
2 1 0 3 0 7 49 -1 -1 8.000 1 0 -1 1 0 2
1 1 1.00 90.00 180.00
- 600 8025 600 11700
+ 600 8025 600 12225
2 1 0 3 0 7 49 -1 -1 8.000 1 0 -1 1 0 2
1 1 1.00 90.00 180.00
600 3150 600 1800
@@ -345,58 +345,57 @@
2100 12600 1575 12600 1575 12300 2100 12300 2100 12600
2 4 0 3 33 32 50 -1 20 0.000 1 0 7 0 0 5
6900 12600 6375 12600 6375 12300 6900 12300 6900 12600
-4 1 0 49 -1 4 14 1.5708 4 225 1365 450 825 application\001
-4 1 0 49 -1 4 14 1.5708 4 180 2820 450 9450 connection = cs->conn\001
-4 1 38 48 -1 4 12 0.0000 4 180 1230 8409 657 si_cs_io_cb\001
-4 0 0 49 -1 4 12 1.5708 4 180 2820 2850 3225 mux->subscribe(SUB_RECV)\001
-4 1 0 46 -1 4 16 1.5708 4 210 750 3600 4200 rxbuf\001
-4 1 0 46 -1 4 16 1.5708 4 210 645 4575 9375 dbuf\001
-4 1 0 49 -1 4 12 1.5708 4 195 1185 900 825 (eg: checks,\001
-4 1 0 49 -1 4 12 1.5708 4 180 1200 1125 750 stream-int)\001
-4 1 0 49 -1 4 16 0.0000 4 195 600 12300 7125 MUX\001
-4 1 0 44 -1 4 16 0.0000 4 195 960 4500 8175 DEMUX\001
-4 2 0 49 -1 4 12 0.0000 4 150 1080 3600 8100 Stream ID\001
-4 0 0 49 -1 4 12 0.0000 4 150 1080 12825 7125 Stream ID\001
-4 2 0 49 -1 4 12 0.0000 4 195 1845 3300 10125 tasklet_wakeup()\001
-4 2 0 49 -1 4 12 0.0000 4 195 1845 12150 10125 tasklet_wakeup()\001
-4 2 0 49 -1 4 12 0.0000 4 180 1590 11175 3150 mux->snd_buf()\001
-4 0 0 49 -1 4 12 0.0000 4 180 1605 3675 3225 mux->rcv_buf()\001
-4 0 0 49 -1 4 12 0.0000 4 195 2130 13425 10575 xprt->snd_buf(mbuf)\001
-4 0 0 49 -1 4 12 0.0000 4 195 2070 4725 10500 xprt->rcv_buf(dbuf)\001
-4 1 0 49 -1 4 12 0.0000 4 165 3465 8400 2100 HTX contents when mode==HTTP\001
-4 0 0 49 -1 4 12 0.0000 4 180 2430 13125 675 snd_buf() will move the\001
-4 0 0 49 -1 4 12 0.0000 4 195 2490 13125 975 buffer (zero-copy) when\001
-4 0 0 49 -1 4 12 0.0000 4 195 2595 13125 1275 the destination is empty.\001
-4 2 0 49 -1 4 12 0.0000 4 195 1845 7500 450 tasklet_wakeup()\001
-4 0 0 49 -1 4 12 0.0000 4 195 1845 9300 450 tasklet_wakeup()\001
-4 1 38 48 -1 4 12 0.0000 4 165 735 9534 4200 encode\001
-4 1 38 48 -1 4 12 0.0000 4 165 735 11325 4200 encode\001
-4 1 38 48 -1 4 12 0.0000 4 165 735 13134 4200 encode\001
-4 1 38 48 -1 4 12 0.0000 4 165 735 15009 4200 encode\001
-4 1 38 48 -1 4 12 0.0000 4 165 735 1725 5250 decode\001
-4 1 38 48 -1 4 12 0.0000 4 165 735 3525 5250 decode\001
-4 1 38 48 -1 4 12 0.0000 4 165 735 5325 5250 decode\001
-4 1 38 48 -1 4 12 0.0000 4 165 735 7200 5250 decode\001
-4 1 38 48 -1 4 12 0.0000 4 180 1155 12375 9300 mux_io_cb\001
-4 0 0 49 -1 4 12 1.5708 4 180 2835 12075 3225 mux->subscribe(SUB_SEND)\001
-4 1 0 49 -1 4 14 1.5708 4 165 1605 450 4500 mux streams\001
-4 1 0 49 -1 4 14 1.5708 4 150 2145 450 6750 mux=conn->mux\001
-4 1 0 49 -1 4 14 1.5708 4 180 1590 450 2550 conn_stream\001
-4 0 0 49 -1 4 12 0.0000 4 150 660 12900 75 Notes:\001
-4 0 0 49 -1 4 12 0.0000 4 180 2175 12975 375 - mux->rcv_buf() and\001
-4 0 0 49 -1 4 12 0.0000 4 195 2475 12975 1650 - the application is also\001
-4 0 0 49 -1 4 12 0.0000 4 195 2655 13125 1950 called the data layer and\001
-4 0 0 49 -1 4 12 0.0000 4 180 2925 13125 2250 is cs->data and cs->data_cb\001
-4 0 0 49 -1 4 12 0.0000 4 195 2940 12975 2550 - transport layers (xprt) are\001
-4 0 0 49 -1 4 12 0.0000 4 195 2520 13125 2775 stackable. conn->xprt is\001
-4 0 0 49 -1 4 12 0.0000 4 195 1770 13125 3000 the topmost one.\001
-4 1 0 49 -1 4 18 0.0000 4 270 1410 4500 11175 Transport\001
-4 1 0 46 -1 4 16 0.0000 4 210 735 14625 8175 mbuf\001
-4 1 38 48 -1 4 12 0.0000 4 180 1155 3159 9300 mux_io_cb\001
-4 0 0 49 -1 4 12 0.0000 4 195 2910 2250 12000 encoding/decoding function\001
-4 0 0 49 -1 4 12 0.0000 4 195 1635 2250 12525 transport layer\001
-4 0 0 49 -1 4 12 0.0000 4 195 2730 7050 12525 multiplexer (MUX/DEMUX)\001
-4 0 0 49 -1 4 12 0.0000 4 195 2895 7050 12000 general processing function\001
-4 0 0 49 -1 4 12 0.0000 4 195 3255 11775 12525 stream buffer (byte-level FIFO)\001
-4 2 0 49 -1 4 12 0.0000 4 195 2835 3675 10725 xprt->subscribe(SUB_RECV)\001
-4 2 0 49 -1 4 12 0.0000 4 195 2850 12225 10725 xprt->subscribe(SUB_SEND)\001
+4 1 0 49 -1 4 14 1.5708 4 225 1335 450 825 application\001
+4 0 0 49 -1 4 12 1.5708 4 180 2595 2850 3225 mux->subscribe(SUB_RECV)\001
+4 1 0 46 -1 4 16 1.5708 4 210 645 3600 4200 rxbuf\001
+4 1 0 46 -1 4 16 1.5708 4 210 615 4575 9375 dbuf\001
+4 1 0 49 -1 4 16 0.0000 4 210 600 12300 7125 MUX\001
+4 1 0 44 -1 4 16 0.0000 4 210 945 4500 8175 DEMUX\001
+4 2 0 49 -1 4 12 0.0000 4 150 915 3600 8100 Stream ID\001
+4 0 0 49 -1 4 12 0.0000 4 150 915 12825 7125 Stream ID\001
+4 2 0 49 -1 4 12 0.0000 4 180 1635 3300 10125 tasklet_wakeup()\001
+4 2 0 49 -1 4 12 0.0000 4 180 1635 12150 10125 tasklet_wakeup()\001
+4 2 0 49 -1 4 12 0.0000 4 180 1470 11175 3150 mux->snd_buf()\001
+4 0 0 49 -1 4 12 0.0000 4 180 1425 3675 3225 mux->rcv_buf()\001
+4 0 0 49 -1 4 12 0.0000 4 180 1920 13425 10575 xprt->snd_buf(mbuf)\001
+4 0 0 49 -1 4 12 0.0000 4 180 1830 4725 10500 xprt->rcv_buf(dbuf)\001
+4 1 0 49 -1 4 12 0.0000 4 150 3105 8400 2100 HTX contents when mode==HTTP\001
+4 2 0 49 -1 4 12 0.0000 4 180 1635 7500 450 tasklet_wakeup()\001
+4 0 0 49 -1 4 12 0.0000 4 180 1635 9300 450 tasklet_wakeup()\001
+4 1 38 48 -1 4 12 0.0000 4 150 750 9534 4200 encode\001
+4 1 38 48 -1 4 12 0.0000 4 150 750 11325 4200 encode\001
+4 1 38 48 -1 4 12 0.0000 4 150 750 13134 4200 encode\001
+4 1 38 48 -1 4 12 0.0000 4 150 750 15009 4200 encode\001
+4 1 38 48 -1 4 12 0.0000 4 150 765 1725 5250 decode\001
+4 1 38 48 -1 4 12 0.0000 4 150 765 3525 5250 decode\001
+4 1 38 48 -1 4 12 0.0000 4 150 765 5325 5250 decode\001
+4 1 38 48 -1 4 12 0.0000 4 150 765 7200 5250 decode\001
+4 1 38 48 -1 4 12 0.0000 4 180 1035 12375 9300 mux_io_cb\001
+4 0 0 49 -1 4 12 1.5708 4 180 2580 12075 3225 mux->subscribe(SUB_SEND)\001
+4 1 0 49 -1 4 14 1.5708 4 180 1425 450 4500 mux streams\001
+4 1 0 49 -1 4 14 1.5708 4 135 1980 450 6750 mux=conn->mux\001
+4 1 0 49 -1 4 18 0.0000 4 285 1335 4500 11175 Transport\001
+4 1 0 46 -1 4 16 0.0000 4 210 690 14625 8175 mbuf\001
+4 1 38 48 -1 4 12 0.0000 4 180 1035 3159 9300 mux_io_cb\001
+4 0 0 49 -1 4 12 0.0000 4 195 2805 2250 12000 encoding/decoding function\001
+4 0 0 49 -1 4 12 0.0000 4 180 1365 2250 12525 transport layer\001
+4 0 0 49 -1 4 12 0.0000 4 180 2445 7050 12525 multiplexer (MUX/DEMUX)\001
+4 0 0 49 -1 4 12 0.0000 4 195 2655 7050 12000 general processing function\001
+4 0 0 49 -1 4 12 0.0000 4 180 2820 11775 12525 stream buffer (byte-level FIFO)\001
+4 2 0 49 -1 4 12 0.0000 4 180 2550 3675 10725 xprt->subscribe(SUB_RECV)\001
+4 2 0 49 -1 4 12 0.0000 4 180 2535 12225 10725 xprt->subscribe(SUB_SEND)\001
+4 1 0 49 -1 4 14 1.5708 4 180 780 450 2550 stconn\001
+4 1 0 49 -1 4 12 1.5708 4 195 2010 900 1125 (eg: checks, streams)\001
+4 1 0 49 -1 4 14 1.5708 4 180 3720 450 10125 connection = sc->sedesc->conn\001
+4 0 0 49 -1 4 12 0.0000 4 150 600 12225 225 Notes:\001
+4 0 0 49 -1 4 12 0.0000 4 180 2220 12975 675 snd_buf() will move the\001
+4 0 0 49 -1 4 12 0.0000 4 180 2310 12975 975 buffer (zero-copy) when\001
+4 0 0 49 -1 4 12 0.0000 4 180 2310 12975 1275 the destination is empty.\001
+4 0 0 49 -1 4 12 0.0000 4 180 2220 12825 1650 - the application is also\001
+4 0 0 49 -1 4 12 0.0000 4 180 2700 12975 2250 is sc->app with sc->app_ops\001
+4 0 0 49 -1 4 12 0.0000 4 180 2490 12825 2550 - transport layers (xprt) are\001
+4 0 0 49 -1 4 12 0.0000 4 180 2250 12975 2775 stackable. conn->xprt is\001
+4 0 0 49 -1 4 12 0.0000 4 180 1635 12975 3000 the topmost one.\001
+4 0 0 49 -1 4 12 0.0000 4 180 2400 12975 1950 called the app layer and\001
+4 0 0 49 -1 4 12 0.0000 4 180 1995 12825 375 - mux->rcv_buf() and\001
+4 1 38 48 -1 4 12 0.0000 4 180 1440 8409 657 sc_conn_io_cb\001
diff --git a/doc/internals/muxes.pdf b/doc/internals/muxes.pdf
index d0c6432..54f8cc7 100644
--- a/doc/internals/muxes.pdf
+++ b/doc/internals/muxes.pdf
Binary files differ
diff --git a/doc/internals/muxes.png b/doc/internals/muxes.png
index a5a0102..a58f42f 100644
--- a/doc/internals/muxes.png
+++ b/doc/internals/muxes.png
Binary files differ
diff --git a/doc/internals/muxes.svg b/doc/internals/muxes.svg
index 091c5b0..3feaa4d 100644
--- a/doc/internals/muxes.svg
+++ b/doc/internals/muxes.svg
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Creator: fig2dev Version 3.2.7b -->
-<!-- CreationDate: 2021-02-24 09:03:04 -->
+<!-- Creator: fig2dev Version 3.2.8b -->
+<!-- CreationDate: 2022-05-27 11:37:43 -->
<!-- Magnification: 1 -->
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
- width="954pt" height="764pt"
- viewBox="254 -90 15885 12723">
+ width="942pt" height="755pt"
+ viewBox="254 60 15690 12573">
<g fill="none">
<!-- Line -->
<rect x="12000" y="10800" width="1800" height="600" rx="105" fill="#458dba"
@@ -107,9 +107,6 @@
<ellipse cx="5325" cy="5175" rx="583" ry="250" fill="#ffe6cc"
stroke="#e9b000" stroke-width="45px"/>
<!-- Ellipse -->
-<ellipse cx="8400" cy="600" rx="900" ry="210" fill="#ffc1e7"
- stroke="#d10000" stroke-width="45px"/>
-<!-- Ellipse -->
<ellipse cx="12333" cy="7025" rx="417" ry="250" fill="#87cfff"
stroke="#0000d1" stroke-width="45px"/>
<!-- Ellipse -->
@@ -121,6 +118,9 @@
<!-- Ellipse -->
<ellipse cx="1800" cy="11925" rx="225" ry="150" fill="#ffe6cc"
stroke="#e9b000" stroke-width="45px"/>
+<!-- Ellipse -->
+<ellipse cx="8400" cy="600" rx="900" ry="210" fill="#ffc1e7"
+ stroke="#d10000" stroke-width="45px"/>
<!-- Line -->
<polyline points=" 2550,3300 2550,6150"
stroke="#000000" stroke-width="8px" stroke-linejoin="round" stroke-dasharray="40 40"/>
@@ -133,19 +133,19 @@
<!-- Line -->
<defs>
<clipPath id="cp0">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
- M 645,11504 555,11504 582,11718 618,11718z"/>
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
+ M 645,12029 555,12029 582,12243 618,12243z"/>
</clipPath>
</defs>
-<polyline points=" 600,8025 600,11700" clip-path="url(#cp0)"
+<polyline points=" 600,8025 600,12225" clip-path="url(#cp0)"
stroke="#000000" stroke-width="30px" stroke-linejoin="round"/>
-<!-- Forward arrow to point 600,11700 -->
-<polygon points=" 555,11504 600,11684 645,11504 555,11504"
+<!-- Forward arrow to point 600,12225 -->
+<polygon points=" 555,12029 600,12209 645,12029 555,12029"
stroke="#000000" stroke-width="8px" stroke-miterlimit="8" fill="#000000"/>
<!-- Line -->
<defs>
<clipPath id="cp1">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 555,1996 645,1996 618,1782 582,1782z"/>
</clipPath>
</defs>
@@ -157,7 +157,7 @@
<!-- Line -->
<defs>
<clipPath id="cp2">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 555,346 645,346 618,132 582,132z"/>
</clipPath>
</defs>
@@ -169,7 +169,7 @@
<!-- Line -->
<defs>
<clipPath id="cp3">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 7304,555 7304,645 7518,618 7518,582z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -185,7 +185,7 @@
<!-- Line -->
<defs>
<clipPath id="cp4">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 6554,1455 6554,1545 6768,1518 6768,1482z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -198,7 +198,7 @@
<!-- Line -->
<defs>
<clipPath id="cp5">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 11661,5428 11578,5465 11691,5649 11724,5634z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -211,7 +211,7 @@
<!-- Line -->
<defs>
<clipPath id="cp6">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 10571,5541 10514,5611 10698,5725 10720,5697z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -224,7 +224,7 @@
<!-- Line -->
<defs>
<clipPath id="cp7">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 12905,5461 12822,5427 12764,5635 12798,5649z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -237,7 +237,7 @@
<!-- Line -->
<defs>
<clipPath id="cp8">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 14066,5607 14007,5539 13863,5700 13886,5727z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -250,7 +250,7 @@
<!-- Line -->
<defs>
<clipPath id="cp9">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 9555,3689 9495,3689 9507,3843 9543,3843z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -263,7 +263,7 @@
<!-- Line -->
<defs>
<clipPath id="cp10">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 13155,3689 13095,3689 13107,3843 13143,3843z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -276,7 +276,7 @@
<!-- Line -->
<defs>
<clipPath id="cp11">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 15030,3689 14970,3689 14982,3843 15018,3843z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -289,7 +289,7 @@
<!-- Line -->
<defs>
<clipPath id="cp12">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 10229,8355 10229,8445 10443,8418 10443,8382z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -302,7 +302,7 @@
<!-- Line -->
<defs>
<clipPath id="cp13">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 12345,6629 12255,6629 12282,6843 12318,6843z
M 3045,3104 2955,3104 2982,3318 3018,3318z"/>
</clipPath>
@@ -318,7 +318,7 @@
<!-- Line -->
<defs>
<clipPath id="cp14">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 12345,6629 12255,6629 12282,6843 12318,6843z
M 4051,7087 4124,7035 3979,6875 3950,6896z"/>
</clipPath>
@@ -331,7 +331,7 @@
<!-- Line -->
<defs>
<clipPath id="cp15">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 12345,6629 12255,6629 12282,6843 12318,6843z
M 3450,5671 3540,5671 3513,5457 3477,5457z"/>
</clipPath>
@@ -344,7 +344,7 @@
<!-- Line -->
<defs>
<clipPath id="cp16">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 12345,6629 12255,6629 12282,6843 12318,6843z
M 1650,5671 1740,5671 1713,5457 1677,5457z"/>
</clipPath>
@@ -357,7 +357,7 @@
<!-- Line -->
<defs>
<clipPath id="cp17">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 12345,6629 12255,6629 12282,6843 12318,6843z
M 7168,5673 7258,5673 7231,5459 7195,5459z"/>
</clipPath>
@@ -370,7 +370,7 @@
<!-- Line -->
<defs>
<clipPath id="cp18">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 1695,4711 1755,4711 1743,4557 1707,4557z
M 7168,5673 7258,5673 7231,5459 7195,5459z"/>
</clipPath>
@@ -383,7 +383,7 @@
<!-- Line -->
<defs>
<clipPath id="cp19">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 3495,4711 3555,4711 3543,4557 3507,4557z
M 7168,5673 7258,5673 7231,5459 7195,5459z"/>
</clipPath>
@@ -396,7 +396,7 @@
<!-- Line -->
<defs>
<clipPath id="cp20">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 5295,4711 5355,4711 5343,4557 5307,4557z
M 7168,5673 7258,5673 7231,5459 7195,5459z"/>
</clipPath>
@@ -409,7 +409,7 @@
<!-- Line -->
<defs>
<clipPath id="cp21">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 7170,4711 7230,4711 7218,4557 7182,4557z
M 7168,5673 7258,5673 7231,5459 7195,5459z"/>
</clipPath>
@@ -422,7 +422,7 @@
<!-- Line -->
<defs>
<clipPath id="cp22">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 7170,4711 7230,4711 7218,4557 7182,4557z
M 4455,8521 4545,8521 4518,8307 4482,8307z"/>
</clipPath>
@@ -438,7 +438,7 @@
<!-- Line -->
<defs>
<clipPath id="cp23">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 3272,9646 3353,9605 3233,9426 3201,9442z
M 3853,10604 3772,10645 3892,10824 3924,10808z"/>
</clipPath>
@@ -454,7 +454,7 @@
<!-- Line -->
<defs>
<clipPath id="cp24">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 4455,9946 4545,9946 4518,9732 4482,9732z
M 3853,10604 3772,10645 3892,10824 3924,10808z"/>
</clipPath>
@@ -467,7 +467,7 @@
<!-- Line -->
<defs>
<clipPath id="cp25">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 12330,9646 12420,9646 12393,9432 12357,9432z
M 12420,10604 12330,10604 12357,10818 12393,10818z"/>
</clipPath>
@@ -492,7 +492,7 @@
<!-- Line -->
<defs>
<clipPath id="cp26">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 11370,3629 11280,3629 11307,3843 11343,3843z
M 12420,10604 12330,10604 12357,10818 12393,10818z"/>
</clipPath>
@@ -505,7 +505,7 @@
<!-- Line -->
<defs>
<clipPath id="cp27">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 11820,3104 11730,3104 11757,3318 11793,3318z
M 9496,645 9496,555 9282,582 9282,618z"/>
</clipPath>
@@ -521,7 +521,7 @@
<!-- Line -->
<defs>
<clipPath id="cp28">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 11820,3104 11730,3104 11757,3318 11793,3318z
M 13245,10604 13155,10604 13182,10818 13218,10818z"/>
</clipPath>
@@ -534,7 +534,7 @@
<!-- Line -->
<defs>
<clipPath id="cp29">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 11820,3104 11730,3104 11757,3318 11793,3318z
M 5280,5671 5370,5671 5343,5457 5307,5457z"/>
</clipPath>
@@ -547,7 +547,7 @@
<!-- Line -->
<defs>
<clipPath id="cp30">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 555,3496 645,3496 618,3282 582,3282z
M 5280,5671 5370,5671 5343,5457 5307,5457z"/>
</clipPath>
@@ -563,7 +563,7 @@
<!-- Line -->
<defs>
<clipPath id="cp31">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 12314,8370 12314,8430 12468,8418 12468,8382z
M 5280,5671 5370,5671 5343,5457 5307,5457z"/>
</clipPath>
@@ -576,7 +576,7 @@
<!-- Line -->
<defs>
<clipPath id="cp32">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 11639,8370 11639,8430 11793,8418 11793,8382z
M 5280,5671 5370,5671 5343,5457 5307,5457z"/>
</clipPath>
@@ -589,7 +589,7 @@
<!-- Line -->
<defs>
<clipPath id="cp33">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 10964,8370 10964,8430 11118,8418 11118,8382z
M 5280,5671 5370,5671 5343,5457 5307,5457z"/>
</clipPath>
@@ -602,7 +602,7 @@
<!-- Line -->
<defs>
<clipPath id="cp34">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 12989,8370 12989,8430 13143,8418 13143,8382z
M 5280,5671 5370,5671 5343,5457 5307,5457z"/>
</clipPath>
@@ -615,7 +615,7 @@
<!-- Line -->
<defs>
<clipPath id="cp35">
- <path clip-rule="evenodd" d="M 254,-90 H 16139 V 12633 H 254 z
+ <path clip-rule="evenodd" d="M 254,60 H 15944 V 12633 H 254 z
M 13664,8370 13664,8430 13818,8418 13818,8382z
M 5280,5671 5370,5671 5343,5457 5307,5457z"/>
</clipPath>
@@ -629,18 +629,9 @@
<g transform="translate(450,825) rotate(-90)" >
<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="168" text-anchor="middle">application</text>
</g><!-- Text -->
-<g transform="translate(450,9450) rotate(-90)" >
-<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="168" text-anchor="middle">connection = cs->conn</text>
-</g><!-- Text -->
<g transform="translate(2850,3225) rotate(-90)" >
<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">mux->subscribe(SUB_RECV)</text>
</g><!-- Text -->
-<g transform="translate(900,825) rotate(-90)" >
-<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">(eg: checks,</text>
-</g><!-- Text -->
-<g transform="translate(1125,750) rotate(-90)" >
-<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">stream-int)</text>
-</g><!-- Text -->
<text xml:space="preserve" x="12300" y="7125" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="192" text-anchor="middle">MUX</text>
<!-- Text -->
<text xml:space="preserve" x="3600" y="8100" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="end">Stream ID</text>
@@ -661,12 +652,6 @@
<!-- Text -->
<text xml:space="preserve" x="8400" y="2100" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">HTX contents when mode==HTTP</text>
<!-- Text -->
-<text xml:space="preserve" x="13125" y="675" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">snd_buf() will move the</text>
-<!-- Text -->
-<text xml:space="preserve" x="13125" y="975" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">buffer (zero-copy) when</text>
-<!-- Text -->
-<text xml:space="preserve" x="13125" y="1275" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">the destination is empty.</text>
-<!-- Text -->
<text xml:space="preserve" x="7500" y="450" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="end">tasklet_wakeup()</text>
<!-- Text -->
<text xml:space="preserve" x="9300" y="450" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">tasklet_wakeup()</text>
@@ -680,25 +665,6 @@
<g transform="translate(450,6750) rotate(-90)" >
<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="168" text-anchor="middle">mux=conn->mux</text>
</g><!-- Text -->
-<g transform="translate(450,2550) rotate(-90)" >
-<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="168" text-anchor="middle">conn_stream</text>
-</g><!-- Text -->
-<text xml:space="preserve" x="12900" y="75" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">Notes:</text>
-<!-- Text -->
-<text xml:space="preserve" x="12975" y="375" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">- mux->rcv_buf() and</text>
-<!-- Text -->
-<text xml:space="preserve" x="12975" y="1650" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">- the application is also</text>
-<!-- Text -->
-<text xml:space="preserve" x="13125" y="1950" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">called the data layer and</text>
-<!-- Text -->
-<text xml:space="preserve" x="13125" y="2250" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">is cs->data and cs->data_cb</text>
-<!-- Text -->
-<text xml:space="preserve" x="12975" y="2550" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">- transport layers (xprt) are</text>
-<!-- Text -->
-<text xml:space="preserve" x="13125" y="2775" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">stackable. conn->xprt is</text>
-<!-- Text -->
-<text xml:space="preserve" x="13125" y="3000" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">the topmost one.</text>
-<!-- Text -->
<text xml:space="preserve" x="4500" y="11175" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="216" text-anchor="middle">Transport</text>
<!-- Text -->
<text xml:space="preserve" x="2250" y="12000" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">encoding/decoding function</text>
@@ -714,6 +680,37 @@
<text xml:space="preserve" x="3675" y="10725" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="end">xprt->subscribe(SUB_RECV)</text>
<!-- Text -->
<text xml:space="preserve" x="12225" y="10725" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="end">xprt->subscribe(SUB_SEND)</text>
+<!-- Text -->
+<g transform="translate(450,2550) rotate(-90)" >
+<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="168" text-anchor="middle">stconn</text>
+</g><!-- Text -->
+<g transform="translate(900,1125) rotate(-90)" >
+<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">(eg: checks, streams)</text>
+</g><!-- Text -->
+<g transform="translate(450,10125) rotate(-90)" >
+<text xml:space="preserve" x="0" y="0" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="168" text-anchor="middle">connection = sc->sedesc->conn</text>
+</g><!-- Text -->
+<text xml:space="preserve" x="12225" y="225" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">Notes:</text>
+<!-- Text -->
+<text xml:space="preserve" x="12975" y="675" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">snd_buf() will move the</text>
+<!-- Text -->
+<text xml:space="preserve" x="12975" y="975" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">buffer (zero-copy) when</text>
+<!-- Text -->
+<text xml:space="preserve" x="12975" y="1275" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">the destination is empty.</text>
+<!-- Text -->
+<text xml:space="preserve" x="12825" y="1650" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">- the application is also</text>
+<!-- Text -->
+<text xml:space="preserve" x="12975" y="2250" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">is sc->app with sc->app_ops</text>
+<!-- Text -->
+<text xml:space="preserve" x="12825" y="2550" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">- transport layers (xprt) are</text>
+<!-- Text -->
+<text xml:space="preserve" x="12975" y="2775" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">stackable. conn->xprt is</text>
+<!-- Text -->
+<text xml:space="preserve" x="12975" y="3000" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">the topmost one.</text>
+<!-- Text -->
+<text xml:space="preserve" x="12975" y="1950" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">called the app layer and</text>
+<!-- Text -->
+<text xml:space="preserve" x="12825" y="375" fill="#000000" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="start">- mux->rcv_buf() and</text>
<!-- Line -->
<polyline points=" 4261,9751 4261,8751 4761,8751 4761,9751"
stroke="#458dba" stroke-width="45px"/>
@@ -754,8 +751,6 @@
<polyline points=" 11157,12331 11614,12331 11614,12581 11157,12581"
stroke="#458dba" stroke-width="45px"/>
<!-- Text -->
-<text xml:space="preserve" x="8409" y="657" fill="#1a1a1a" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">si_cs_io_cb</text>
-<!-- Text -->
<text xml:space="preserve" x="9534" y="4200" fill="#1a1a1a" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">encode</text>
<!-- Text -->
<text xml:space="preserve" x="11325" y="4200" fill="#1a1a1a" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">encode</text>
@@ -775,6 +770,8 @@
<text xml:space="preserve" x="12375" y="9300" fill="#1a1a1a" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">mux_io_cb</text>
<!-- Text -->
<text xml:space="preserve" x="3159" y="9300" fill="#1a1a1a" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">mux_io_cb</text>
+<!-- Text -->
+<text xml:space="preserve" x="8409" y="657" fill="#1a1a1a" font-family="AvantGarde" font-style="normal" font-weight="normal" font-size="144" text-anchor="middle">sc_conn_io_cb</text>
<!-- Line -->
<polyline points=" 4261,8850 4761,8850"
stroke="#458dba" stroke-width="15px"/>