* 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
1.9 KiB
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
and Worker
are two main loops responsible for processing incoming client connections.
Once connection accepted Application level protocol processing happens in a protocol specific Dispatcher
loop spawned from Worker
.
Please note, below diagrams are outlining happy-path scenarios only.
Accept loop in more detail
Most of code implementation resides in actix-server
crate for struct Accept
.
Worker loop in more detail
Most of code implementation resides in actix-server
crate for struct Worker
.
Request loop roughly
Most of code implementation for request loop resides in actix-web
and actix-http
crates.