|
| 1 | +digraph { |
| 2 | + compound=true; |
| 3 | + |
| 4 | + subgraph cluster_import { |
| 5 | + label="store::import"; |
| 6 | + import_blob[label="blob"]; |
| 7 | + import_driver[label="driver"]; |
| 8 | + import_r[label="r"]; |
| 9 | + import_r2[label="r",shape="tripleoctagon"]; |
| 10 | + import_r -> import_r2[label="join_fetch"]; |
| 11 | + import_driver -> import_r2[label="join_fetch"]; |
| 12 | + } |
| 13 | + |
| 14 | + |
| 15 | + subgraph cluster_fetch_layer { |
| 16 | + label="unencapsulate::fetch_layer"; |
| 17 | + fetch_layer_blob[label="blob"]; |
| 18 | + fetch_layer_driver[label="driver"]; |
| 19 | + fetch_layer_blob -> import_blob; |
| 20 | + fetch_layer_driver -> import_driver; |
| 21 | + } |
| 22 | + |
| 23 | + subgraph cluster_get_blob { |
| 24 | + label="imageproxy::get_blob"; |
| 25 | + get_blob_fd[label="(_,fd)"]; |
| 26 | + get_blob_fd2[label="tokio::File(tokio::BufReader)"]; |
| 27 | + get_blob_finish[label="finish"]; |
| 28 | + get_blob_fd2 -> fetch_layer_blob; |
| 29 | + get_blob_finish -> fetch_layer_driver; |
| 30 | + get_blob_fd -> get_blob_fd2; |
| 31 | + } |
| 32 | + |
| 33 | + subgraph cluster_impl_request { |
| 34 | + label="imageproxy::impl_request"; |
| 35 | + request_req[label="req"]; |
| 36 | + request_req -> get_blob_fd; |
| 37 | + } |
| 38 | + |
| 39 | + subgraph cluster_finish_pipe { |
| 40 | + label="imageproxy::finish_pipe"; |
| 41 | + finish_pipe_r_fd[label="(r,fd)"]; |
| 42 | + finish_pipe_r[label="r"]; |
| 43 | + request_req -> finish_pipe_r_fd; |
| 44 | + finish_pipe_r_fd -> finish_pipe_r; |
| 45 | + finish_pipe_r -> get_blob_finish; |
| 46 | + } |
| 47 | + |
| 48 | + subgraph cluster_write_tar { |
| 49 | + label="tar::write_tar"; |
| 50 | + write_tar_src[label="src"]; |
| 51 | + write_tar_filtered_result[label="filtered_result"]; |
| 52 | + write_tar_output_copier[label="output_copier"]; |
| 53 | + import_blob -> write_tar_src; |
| 54 | + write_tar_ostree_commit_process[label="<ostree commit process>"]; |
| 55 | + write_tar_child_stdin[label="child_stdin"]; |
| 56 | + write_tar_ostree_commit_process -> write_tar_child_stdin; |
| 57 | + |
| 58 | + subgraph cluster_write_tar_status_future { |
| 59 | + label="status Future"; |
| 60 | + write_tar_status_future_r[label="r"]; |
| 61 | + } |
| 62 | + |
| 63 | + write_tar_r[label="r"]; |
| 64 | + write_tar_ostree_commit_process -> write_tar_r[label="spawn()"]; |
| 65 | + write_tar_r -> write_tar_status_future_r; |
| 66 | + |
| 67 | + subgraph cluster_write_tar_output_copier_future { |
| 68 | + label="output_copier Future"; |
| 69 | + write_tar_output_copier_future_child_stdout[label="child_stdout"]; |
| 70 | + write_tar_output_copier_future_child_stderr[label="child_stderr"]; |
| 71 | + } |
| 72 | + |
| 73 | + write_tar_ostree_commit_process -> write_tar_output_copier_future_child_stdout; |
| 74 | + write_tar_ostree_commit_process -> write_tar_output_copier_future_child_stderr; |
| 75 | + |
| 76 | + |
| 77 | + write_tar_filtered_result2[label="filtered_result (in try_join block)"]; |
| 78 | + |
| 79 | + write_tar_status_future_r -> write_tar_filtered_result2[label="tokio::try_join!"]; |
| 80 | + write_tar_filtered_result -> write_tar_filtered_result2[label="tokio::try_join!"]; |
| 81 | + |
| 82 | + write_tar_output_copier_await[label="output_copier.await"]; |
| 83 | + write_tar_filtered_result2 -> write_tar_output_copier_await; |
| 84 | + write_tar_output_copier -> write_tar_output_copier_await; |
| 85 | + |
| 86 | + write_tar_output_copier_future_child_stderr -> write_tar_output_copier[ltail=cluster_write_tar_output_copier_future]; |
| 87 | + } |
| 88 | + |
| 89 | + subgraph cluster_filter_tar_async { |
| 90 | + label="tar::filter_tar_async"; |
| 91 | + |
| 92 | + subgraph cluster_tar_transformer { |
| 93 | + label="tar_transformer Future"; |
| 94 | + tar_transformer_src[label="src"]; |
| 95 | + |
| 96 | + tar_transformer_src2[label="src: SyncIoBridge(src)"]; |
| 97 | + tar_transformer_src -> tar_transformer_src2; |
| 98 | + tar_transformer_src3[label="src: decompressor(src)"]; |
| 99 | + tar_transformer_src2 -> tar_transformer_src3; |
| 100 | + tar_transformer_tx_buf[label="tx_buf"]; |
| 101 | + tar_transformer_dest[label="dest: SyncIoBridge(tx_buf)"]; |
| 102 | + tar_transformer_tx_buf -> tar_transformer_dest; |
| 103 | + } |
| 104 | + |
| 105 | + subgraph cluster_filter_tar_async_copier_future { |
| 106 | + label="copier Future"; |
| 107 | + filter_tar_async_copier_future_rx_buf[label="rx_buf"]; |
| 108 | + filter_tar_async_copier_future_dest[label="dest"]; |
| 109 | + } |
| 110 | + |
| 111 | + filter_tar_async_src[label="src"]; |
| 112 | + filter_tar_async_dest[label="dest"]; |
| 113 | + write_tar_src -> filter_tar_async_src; |
| 114 | + filter_tar_async_tx_buf[label="tx_buf"]; |
| 115 | + filter_tar_async_rx_buf[label="rx_buf"]; |
| 116 | + write_tar_child_stdin -> filter_tar_async_dest; |
| 117 | + filter_tar_async_src -> tar_transformer_src; |
| 118 | + filter_tar_async_tx_buf -> tar_transformer_tx_buf; |
| 119 | + filter_tar_async_rx_buf -> filter_tar_async_copier_future_rx_buf[label="&mut"]; |
| 120 | + filter_tar_async_dest -> filter_tar_async_copier_future_dest[label="&mut"]; |
| 121 | + filter_tar_async_r[label="r"]; |
| 122 | + tar_transformer_src -> filter_tar_async_r[label="tokio::join!", ltail=cluster_tar_transformer]; |
| 123 | + filter_tar_async_copier_future_dest -> filter_tar_async_r[label="tokio::join!", ltail=cluster_filter_tar_async_copier_future]; |
| 124 | + filter_tar_async_r2[label="r"]; |
| 125 | + filter_tar_async_src2[label="src"]; |
| 126 | + |
| 127 | + filter_tar_async_r -> filter_tar_async_r2; |
| 128 | + filter_tar_async_r -> filter_tar_async_src2; |
| 129 | + |
| 130 | + filter_tar_async_r2 -> write_tar_filtered_result; |
| 131 | + |
| 132 | + filter_tar_async_drop_src[label="drop(src)"]; |
| 133 | + filter_tar_async_src2 -> filter_tar_async_drop_src; |
| 134 | + |
| 135 | + } |
| 136 | + |
| 137 | + write_tar_output_copier_await -> import_r[ltail=cluster_write_tar]; |
| 138 | + |
| 139 | +} |
0 commit comments