1
0
mirror of https://github.com/actix/actix-website synced 2024-11-27 10:02:57 +01:00
actix-website/docs/conn_lifecycle.md
Hichem Fantar ad4aeac34f
TypeScript compatibility (#379)
* Update file extensions and exports for TypeScript compatibility

* docs: fix typo in getting-started.md

* chore: add no-trailing-punctuation rule to VS Code settings

* feat: add @docusaurus/theme-mermaid for mermaid diagram support

* Update import paths for MermaidDiagram component

* remove redudndant check, use effect only runs after the component is mounted

* Update docusaurus.config.ts to fix syntax error

* bring back check because it's not possible to properly cancel a dynamic import

* feat: optimize dynamic import in CodeBlock component

* chore: update VS Code extensions.json with eslint recommendation

* Update docusaurus.config.ts to add GitHub repository link in header
2024-05-28 19:23:34 +00:00

45 lines
1.9 KiB
Markdown

---
title: Connection Lifecycle
---
import MermaidDiagram from "@site/src/components/mermaid_diagram";
import connection_overview from '!!raw-loader!@site/static/img/diagrams/connection_overview.mmd';
import connection_accept from '!!raw-loader!@site/static/img/diagrams/connection_accept.mmd';
import connection_worker from '!!raw-loader!@site/static/img/diagrams/connection_worker.mmd';
import connection_request from '!!raw-loader!@site/static/img/diagrams/connection_request.mmd';
# Architecture overview
After Server has started listening to all sockets, [`Accept`][accept] and [`Worker`][worker] are two main loops responsible for processing incoming client connections.
Once connection accepted Application level protocol processing happens in a protocol specific [`Dispatcher`][dispatcher] loop spawned from [`Worker`][worker].
Please note, below diagrams are outlining happy-path scenarios only.
<MermaidDiagram value={connection_overview} />
## Accept loop in more detail
<MermaidDiagram value={connection_accept} />
Most of code implementation resides in [`actix-server`][server] crate for struct [`Accept`][accept].
## Worker loop in more detail
<MermaidDiagram value={connection_worker} />
Most of code implementation resides in [`actix-server`][server] crate for struct [`Worker`][worker].
## Request loop roughly
<MermaidDiagram value={connection_request} />
Most of code implementation for request loop resides in [`actix-web`][web] and [`actix-http`][http] crates.
[server]: https://crates.io/crates/actix-server
[web]: https://crates.io/crates/actix-web
[http]: https://crates.io/crates/actix-http
[accept]: https://github.com/actix/actix-net/blob/master/actix-server/src/accept.rs
[worker]: https://github.com/actix/actix-net/blob/master/actix-server/src/worker.rs
[dispatcher]: https://github.com/actix/actix-web/blob/master/actix-http/src/h1/dispatcher.rs